Skip to main content

Full text of "TS-2068 Up-date"

See other formats


JULY 1989" 
14g; ¢. 


‘The TS-2068 Workhorse 
~best 8 bit Computer ever made! 


The Sinclair 288 
=revolutionary Lap~Top Computer! 


The Sinclair QL 
~a 32 bit CPU Powerhouse! 


UPDATE Magazine 
1317 Stratford Ave. 
Panama City, EL 32404 


News anp New Prooucrs 


"hig is the first "USER GROUP DIGEST” page. UP-DATE invites each Timex-Sinclatt User Gcoup 
to send ina one page natrative about their organization. CATS is tle firet ard it should serve 
G2 a guide. So come on you Club Secretaries, tell us about yourselé. 


‘TIMEX-SINCLAIR USER GROUP DIGEST 


C.A.T.S. The Capital Area Timex Sinclair User Group 


We are the Capital Area Timex Sinclair (CATS) Users Group - 
located in the nation’s capital, Washington, DC. We are a 
not-for-profit organization and have been around since there were 
ads in Popular Science for ZX-81 kits. We have about 90 members ~ 
about a third of them are active users of TS=2068’s and more than 
half have TS-2068's. Most of our members are from the the local 
area but. we have dedicated members who come from as far away as 
Wilmington, DE and Harrisburg, PA to attend our meetings. We meet 
on the second Saturday of every month in the New Carrolton Public 
Library, New Carrollton, MD just inside the Capital Beltway 
(I-95). We usually have hardware sessions covering repairs and 
modifications starting at 11 a.m. and then the general meeting at 
2 p.m. Each meeting usually has a specific topic or theme. 


We provide many services to our members for annual dues of $18. 
Some of these are: 


a Monthly 12-page newsletter (available also to 
non-members for a $12 annual subscription) 


. Group library of software (2X's and TS~2068's) 
available at a nominal fee (i.e., the cost of the tape) 


. Group buys of hardware and software to get volume 
discounts (e-ge, TS-2068 SCLD‘’s, non-volatile RAM 
boards, disk controllers, disk drives and cases, printer 
interfaces) 


. Hardware sessions with expert technical guidance where 
we repair or modify hardware, and build items that come 
in kit format 


. Software sessions as part of our general meetings where 
people present software that the have developed or used. 


In addition, we have many members who still actively use their 
ZX's and TS-1000's In addition, we have a growing number of QL 
users and even a few Z-88 users. We actively try to represent the 
entire spectrum (pardon the pun) of Timex and Sinclair users. 


Our Executive Board is comprised of: 


President Tom Bent 7 
1st Vice President Hank Dickson 
2nd Vice President George Rey 
Secretary ' Mike Warmick 
Treasurer Ruth Fegley 
Members-at-Large 

Bill Barnhart 


Bob Curnutt 
2 Mark Fisher 
Newsletter editor Vernon Smith 


For more information or a sample of our newsletter, please feel 
free to contact Vernon Smith at (703) 978-1835, or c/o CATS, P.O. 
Box 467, Fairfax Station, VA 22039. If reading this has made you, 
want to join up without waiting another minute, send your name and 
address along with a check for $18 ($12 for newsletter 
subscription only) made payable to "CATS" to the above address. 


2. 


The Last Issue of your Subscription 
Do you want another Year? 


UP-DATE began last October with 40 subscribers 
and it has been a tough climb to the present 220. 
A few subscriptions are still trickling in. ‘The 
number of TS-2068 users is very small, smaller than 
most realize. analysis by UP-DATE leads to the 
conclusion that there are fewer than 800 active 
users of the TS-2068. Further, it seems that there 
are fewer than 500 "serious" TS-2068 users who have 
already, or who are interested in developing their 
TS-2068 beyond its original configuration. In 
order to assure publication support for such a small 
geoup there must bea feeling of "family" and the 
family must be mutually supportive. I believe that 
UP-DATE has been successful in promoting the TS~2068 
family concept. Several outstanding writers and 
programmers have joined in to share their knowledge 
out of their desires to help. 


The TS-2068 family of users need continuing 
publication support. | UP-DATE will continue to 
provide the support IF there are sufficient numbers 
who want to subscribe to a Quarterly magazine of 
this size. There is one business factor which is 
missing in a publication about ORPHAN computers. 
The missing factor is ADVERTISING, which all profit 
motovated publications depend upon. Ordinarily a 
magazine that has the article content of UP-DATE 
would have about 100 pages and about 60 pages would 
be advertising. The publisher would be making 
enough to send the kids to Harvard or Oxford. 
Without such advertising income, which really isn't 
possible to achieve by a TS publication, the 
subscriptions must pay the costs. This is true for 
all of our TS-2068 and QL publications, 


The real reason for the decision to "hang on” 
is the attitude of the subscribers to UP-DATE as 
expressed in mail received and numerous phone calls. 
All have been full of encouragement and want UP-DATE 
to continue. Most who are not owners of the 
Sinclair Ql are tolerant of the idea of sharing 
UP-DATE with the QL user group, just so long as the 
coverage of the TS-2068 is not diminished. The 
subscribers who are QL owners are delighted. Ina 
way, the lack of advertising is a PLUS for the 
subscribers, because UP-DATE can be (and is) 
completely dedicated to the interests of the 
subscribers and not influenced by a syndrome of 
catering to the paying advertisers. Never the less, 
UP-DATE and the other 2X-TS publications are hanging 
on by their teeth and their survival is tenuous, 
completely dependant upon a high renewal of 
subscriptions. 


So, here is the plan and the pramise. UPDATE 
will hang in there and begin another year of issues 
while asking for subscription renewals. The article 
content of UP-DATE will be at least 30 pages of 
TS-2068 specific coverage. The Sinclair QL and the 
Z88 will be covered in extra pages and the magazine 
will grow with the QL and 288 coverage. The October 
issue will start the next year. ‘The future of 
UP-DATE depends upon most of the present subscribers 
xenewing subscriptions. If there is an insufficient 
number of renewals, then you will get your October 
issue along with a 3/4 refund, and your editor will 
begin to devote more time to other hobbies. UP-DATE 
cannot start over at the half way point to try to 
build to the present level. Judging fron the 
attitudes of the subscribers, such a back step will 
not occur. 


The subscription goal of UP-DATE has not quite 
met expectation. But with the present FULL SUPPORT 
of the three current Disk Systems, more Larken DOS 
and Aerco FD-68 DOS users should be joining the 
UP-DATE family when the word gets around that these 
disk systems ARE supported. This July issue should 
go a long way toward proving that point. A lot of 
money has been spent to gain a fully capable TS-2068 
Lab, including all current DOS systems and all disk 
formats. This full capability allows full service 
to the subscribers. A similiar well equipped 
Sinclair QL Lab is in operation. The programs and 
utilities given in UP-DATE are all fully tested 
before publishing, right here at the UP-DATE Lab. 
From now on the programs and utilities will be given 
in three DOS formats, Oliger DOS, Larken DOS, and 
Aerco FD-68 DOS (when pratical). 


Whilé the sales of new disk drive controllers 
have peaked, there are still a number of users who 
want to upgrade to disk capability. We will 
continue to seek more TS-2068 user subscribers who 
want to "take it to the limit". As UPDATE phases 
into supporting the Sinclair @, we will seea 
repeat of the past, where most programs presented 
will have "dual application". Although the TS-2068 
and the OL are different computers, most programs 
that operate in one can be changed in syntax to 
operate in the other. This will provide some fresh 
new conversion programming for both computer users. 
We TS-2068 users need such an infusion of new 
programming, and most of our good programs can be 
carried into the QL, maybe expanded. So, let us 
join forces with the QL users and keep on truckin, 
but faster. 


A few personal notes: As I get deeper into the 
operation of the three active Disk systems for the 
TS-2068 I am struck with the enoromous capability. 
I guess that for the money spent on the TS-2068 I 
could be operating a fully exanded IBM AT system 
with two floppies and a 60 Mega byte hard drive. I 
have operated the excellent IBM computers at the 
College. The concept of that system is different. 
Everything is planned for you. Software is rigidly 
constructed for a specific range of functions, copy 
protected, and everything is costly. There is not 
the flexibility that one has with a fully developed 
TS-2068. I am finding that this comparison is also 
true when comparing the IBM and the Sinclair Q. 
One has more flexibility with our computers and much 
less expense of operation. And the overall 
capability is not much different. 


This JULY UPDATE Issue- New Programs and New 
Utilities 


Putting this issue together involved taking the 
BUDGET program (by Bob Mitchell) and doinga 
rewrite of the supporting BUDGET.B1 loader and 
constructing the Disk Menus for Oliger DOS and FD-68 
DOS. Then each DOS version had to be extensively 
tested. Then the same process was required for the 
other programs given. During this process some new 
utilities were developed and will be given. 
Deficiencies were discovered in the Aerco printer 
driver code, which many use with TS-2068 printing 
software. I will give you the procedures that I 
used to work around these built in glitches. Then 
next issue we will go further into PRINTER CODES and 
how to do a better job with them. Jack Dohany's 
early "RALOADER" program was used to work ina 
relocatable code table. T suspect that Jack has 
some up-dates to the Aerco Printer handler code and 

4, Will see if we can bring them to you. 


INIT: This is a utility program to quickly get 
a printer port code loaded, initialized and ready to 
print with a Centronics printer. Given are two INIT 
utilities for using the Aerco Printer Port code with 
the Aerco FD-68, and with the Larken LKDOS. Another 
INIT is given for setting up the OLIGER printer 
driver that is contained in the SAFE EPROM. Many 
Larken LXDOS users use the Aerco preode and its set 
up is kinda tricky. This preode is the one on 
cassette as supplied with the Aerco Centronics 
interface. The INIT utility for the AERCO FD-68 is 
reloactable (to a starting address of your choice). 


Perhaps in a future issue a similiar utility 
for the Oliger proode that accompanies the Oliger 
Centronics interface can be presented. Mr. Oliger's 
driver code requires much less RAN and is error 
free, while the Aerco prcode has a "first LPRINI" 
glitch that is difficult to work around. Also the 
Aerco Proode lacks support of TAB and printer status 
check. Incidentally, the Aerco and Oliger codes 
work equally as well with either centronics 
interface. I will ask Mr. Oliger to let us use his 
preode, as it is much better. The Oliger Disk users 
do not have to worry with loading a proade as the 
SAFE EPROM contains the code and is initialized with 
<LET /p=0>. 


Help with the Aerco FD-68 


A problem exists in using the Aerco FD-68 Dos, 
Since there is mo Character Array SAVE LOAD, the 
data files must be either CODE files or a complete 
Variable file save load. When a vars file is loaded 
the existing basic program vars are replaced. This 
means that I could not do what I'm now doing; ie, I 
could not SAVE several data files as VARS files, and 
re-load them sequentially to print a continuous 
document. This is because the printing variables 
(line length, print style, etc) would be wiped out 
with the LOAD of a vars file. The INIT utility for 
the Aerco FD-68 takes care of this by providing 67 
extra bytes of code ABOVE the 800 byte proode, for 
storage of variables. So, the solution is to "hide 
the essential vars" above the prcode before loading 
in a new vars data file for printing. 


A small counter from 1 to 67, using a READ DATA 
within the counter can be used to stash these vars 
before a vars file is booted in. The DATA line can 
contain the letter designations of the essential 
vars to be preserved. Then AFTER the new Vars file 
(a data file) has been loaded, the essential vars 
(numbers) can be PEEKed out and re-assigned to the 
essential vars. Then the basic program can resume 
with identical printing and set-up variables. This 
is the way the Aerco FD-68 version of Smart Text 
conducts automatic printing of multiple data files 
booted in fron disk. This requires the variables to 
be poked to the (appended) proode just before the 
new data file (a vars file) is loaded. 


A Code File Printer 


MS-TAS: I donate this new utility to Public 
Domain.  MS~TAS is a utility to peek and print out 
Mscript and Tasword CODE files "without need to have 
either of the softwares" loaded. Some of us do not 
use either Mscript or Tasword, but receive data 
files saved with these two popular word processors. 
I got tired of wondering "what the heck's in thar" 
and MS-TAS is the result. It CATs the disk 
directory, prompts to input a code file name, then 
LOADS the code and begins printing with a Centronics 
printer. | All you need to input is printing line 
length, the STARTING code address and the BYTE 


LENGTH of the code. For Aerco and Larken DOS, the 
printer code is also booted in and initialized. 


Using STR$ to Modify Disk Program Titles 


Here's a little quib for Disk Users: The 
senario is, several data files have been saved with 
a name followed by a number, as SAVE /“page 1"DATA 
hS$() through “page 30". Now Smart Text can print 
all 30 of these file in one continuous document 
without pausing for breath. BUI, the titles are not 
accepted. ST wants just numbers as titles for auto 
printing from disk. This little quib will fix 
things. << FOR n=1 TO 30: RESTORE /"page "+ SIRS 
nDATA $ TO STR$ n: NEXT n >>. CAT the directory and 
the 30 "page num" £iles have been changed to just 
nunbers 1 - 30 for printing. Hope I didn't lose you 
with that. All we did was to re-name 30 files in 
disk within about 30 seconds. A numeric variable, 
such as n,. is added to a literal “string of 
characters" by using STR$ n. 


Similiar concats of disk titles for SAVE LOAD 
RESTORE ERASE CAT MOVE are practical. Saya 
variable ‘n” needs to be appended to a title "page" 
to SAVE with LARKEN DOS. << LET a$="page "+ SIRS 
n+".a$": PRINT #4: SAVE a$ >> ort to do it. Here's 
an easier one for Aerco FD-68 to save PROGRAMS under 
a "program number" instead of a SAVE OVER. The 
title is "mscript" and the auto RUN line is 10. 
Your save line would ber << OUT 244,12 MOVE 
"mscript.bas",10 >>. We start with a variable like 
<<LET ss=l>> then change the SAVE line to: << OUT 
244,1: LET a$="""mscript "+ SIRS ss#".bas""": MOVE 
was",10: LET ss=sstl >>. The first save is "mscript 
l.bas". ‘The next save will be "mscript 2.bas". To 
get to be frienis with SIRS, do this: <LET a=l> 
<PRINT STR$ a>.  <LET b$="test"> <LET c$=b$+" "+ 
STR a> <PRINI 6S>. See? SIRS is pretty friendly 
after all! ’ 


A Print Wheel Problem 


‘The print character style of the previous issue 
looked pretty good to me, until a subscriber called 
about having trouble deciphering listings. The 
problem is one of discerning whether a character is 
a "i", a "1" (el), or a "1" (one). This has always 
been a problem with type and some typewriters use 
the. literal "1" (el) for the number "1" (one). I 
looked around town and found a print wheel that 
seems to give better identification of the "i" 
(eye), but alas, the letter "1" (el) and the number 
bk ind (one) looks the same. can you tell the 
difference- 111111? I'll try to solve this ident 
problen by using upper case "L" in listings, while 
looking for a print wheel that has better 
characters. 


A TOS (Zebra) Disk Newsletter 


TOS DISK (Zebra FDD): 
newsletter “FDD EXPRESS" done by Mr. Ron Havlen, 
4307 Chambers Road, Horseheads, NY 14845. FDD 
Express represents a resumption of the (defunct) 
‘TOPS Newsletter. Ron is a subscriber to UPDATE and 
IT invited him to contribute regular articles in 


UPDATE receives a nice 


support of the TOS DISK. Instead, Ron gave 
permission to re-print anything found in his 
newsletter. I will print excerpts of FDD EXPRESS 


from time to time. This issue givesone sample two 
page isue for TOS disk users to evaluate. Ron 
pranises to get heavy into CP/M and some of that 
should be interesting to the Aerco FD-68 users. In 
the meantime, those who have the Zebra FDD (TOS) 
disk really should have this newsletter. (Look in 


5 


the Orphan Disk section) 
A Save Nothing File 


"Cclear"CODE: Did you know that once a CODE 
program has been loaded, the durn thing cannot be 
gotten rid of? CLEAR only clears the vars. NEW and 
the code is still stuck in thar. Set RAM TOP again, 
and the code is still there. You may not want to 
lose your Basic program by OFF or RANDOMIZE USR 0, 
just to clear the code out. There is a easy way to 
do this, so easy that its one o them “Why dint I 
thunk of it befores". Turn ON the computer and SAVE 
"Cclear"CODE 30000,5535. Thats a SAVE of 35535 
bytes of "zeroes". Later when you want to clear out 
a code program, just LOAD "Cclear"CODE. You can 
make several Cclear saves to clear out smller 
segments of memory. SAVE "Cclear2"CODE 65368, 167 
will clear just the UDG area (when reloaded). 


Check the VARS Area - _ 


"VARS DIS" is a utility to MERGE to any Basic 
program to give you a disassembly of the entire VARS 
area. Two additional bits of often needed 
information are presented, system variable VARS (the 
starting address of the vars area) and ELINE (top 
byte of vars+1). Then to get P-RAMT (the last byte 
of the BASIC PROGRAM), just substract 1 fron the 
given "VARS" address. But both VARS and P-RAMT will 
be moved UPWARD by the exact byte length of the 
utility VARS_DIS, when the utility is merged. 
Admitedly, this one dont set the barn on fire, but I 
needed it once er it wont a been hatched. And, it 
mought jest turn you on to doin more peekin and 
pokin, which is the way to learn it durn it. 


A BREAK THROUGH DOS for the TS~2068 
Take DOS to The LIMIT - with MAX DOS 


"MAX DOS": Now I've saved these last two to 
the last. A BREAK THROUGH in DISK CAPABILITY, and 
indeed it is, is the STACKING of the two most 
versatile disk operating systems, Oliger DOS ani 
Larken DOS. I'm gonna coin a name for it because 
UP-DATE made the discovery. How bout "MAX DOS", 
which sez mor'n IBM's "MS DOS", Theirs sounds like 
a “mess" whil'st our'n sounds like the mostest. 
Gotta get a leg’ up, right? Well, I'll declare, 
swear, affirm, bet, and guarantee that this "MAX 
DOS" is the best disk operating system that has come 
down the pike for ANY personal computer! "TWO WELL 
DESIGNED DISK SYSTEMS THAT OPERATE TOGETHER AS 
ONE"! ! AND NEITHER TAKES UP ANY OF THE TS-2068 
RAMI! I dont want to take the thunder out of my own 
article, so will just call your attention to it. 


EXTRA MEMORY 


EXIRA MEMORY: Gobs of it! A TS-2068 that has 
twenty times the maximum capacity of a IBM XI! Do 
pictures and proof schematics lie? an interesting 
article by Mr. Charles Bothner sets the tecmical 
basis for our cottage industry to provide more 
memory expansion hardware. 


Did you modify the TS-1000 as per the January 
UP-DATE (Dock Bank Memory for 20 cents)? Well, T 
did and the durn thing didn't work right. So, IT 
sent the board to Jom Oliger with a limit placed on 
repair cost. It came back and now it works ($15.00 
repair cost). Seems that one little detail was left 
out of the modification instructions. Gotta remove 
a feed through on the board. Now the "twin 32K dock 


~//(Save 


bank Ram" sits in expansion port most of the 
time, ready to take basic programs and utilities for 
instant — operation. There is a "kind of” 
multitasking capability here, where a dock bank 
utility can generate data in the vars area to be 
used with a basic program in the home bank. I think 
that I'll try adding a battery to it to make it 
non-volatile memory so that when the computer is 
turned OFF, the data will remain. If successful 
I'll tell you about it. 


The New Oliger V2-52 EPROM 


I recently received the latest Oliger DOS 
EPROM, which includes some real fine additions. 
Included now are the functions ERASE / (file name), 
RESICRE / (old file name to new file name), RESTORE 
/new disk name", —- RESTORE /(used alone to 
re-initialize to default parameters), VERIFY /(file 
name) to check the file for errors, COPY/ copies 
screen to printer, MERGE /(program name), SAVE 
without warning that file “name may be 
present). Of particular note is that the ERASE/ 
function "completely re-organizes the disk contents 
and recovers the disk space from an ERASED file". 


The new SAFE CATALOG has new data that I find 
to be very valuable. The starting line of each 
Basic program is given, and for CODE files the 
starting address and byte length are given. Also, 
the finished SAFE manual is now available. This (I 


believe) is the final coup de ma tre of the Oliger 
SAFE DOS. Any further EPROM versions will be for 
corrections (if un-forseen problems are found). A 


CAT of the directory of the April Issue disk is 
given with the new V2-52 format. It serves two 
purposes, to show the nice catalog, and to show the 
contents of the April issue disk. (The April Issue 
Disk has the same programs for Larken DOS and Aerco 
FD-68 DOS). * 

JLO SAFE V2.52 1988, J, Oliger 


DISK NAME: APRIL UPDATE 
FORMATTED @40 TRACKS, 0 STDE(S) 
CAPACITY: 79 CYLS/395K BYTES 
FREE: 11 CYLS/55K BYTES 


rrumwwe vee ons sreSeaee A 


2 
LoAD Basic 1 87 10 
RUDGET.B1 BASIC 1 986 60 
Yenu.Bi BASIC 1 702 10 
INIT-B1 BASIC 1 583 9980 
budget.) BYIES 6 25923 32000 
spcead.G3 BYTES 1 3904 58400 
buiget.BJ BASIC 5 24554 10 
spcead.BJ BASIC 1 2855 8000 
BRIEF.B1 BASIC 2 5445 
MS-TAS.B1 BASIC 1 924 8000 
ul BASIC 1 487 
PEEK VARS BASIC 1 195 
budget.cY BYTES 6 25923 32000 
SEARCH BASIC 1 49781 
FILE DEX BASIC 1 1163 1 
MARK-MOVE BASIC 1 2092 1 
VERL_DISK BASIC 1 855 1 
Chopin BASIC 2 7584 220 
Btls BASIC 3 1478) 9900 
Mert BasIc 2 7674 
spell BASIC 2 7411 100 
Ofm's Law BASIC 1 1257 100 
Multiply BASIC 2 6038 10 
‘Type Style BASIC 1 2055 4608 
Piano BASIC 1 4747 10 
budgetD BYTES 1 652 64716 
bujE.cl_ BYTES 4 17642 47047 
bujsb.ct BYTES 2 8320 33280 
bujs.C BYTES 1 2048 33280 
heip.cT BYTES 1 3968 33200 
bujd3.Cr BYTES 3 11200 33280 
bujyx.cT BYTES 1 2944 33280 
OLI-MS—TAS BASIC 1 1512 "8990 
OLE CODE BASIC 1 1841 
prod BYTES 1 256 23296 
Celear BYTES 2 5367 60000 

6 Super MS-T BASIC 1 3060 9972 


‘TOTAL FILES: 39 


LETTERS 


Dear Bill, Please send the Jan 88 disk. 
Check inclosed. How about asking the readers if 
anyone can help me out with schematics or other 
info concerning the TS-1000 "BASICARE" modules 
that I have. 


The units are: a connecting module, a 64K 
RAM, two 16K RAMs, a DROM expandable to 8K, and 
a printer interface. These should be much less 
expensive to convert to TS-2068 than to buy new 
ones. 


Ray Norton, PO Box 331, Bonner Springs, KS 
66012-0331 


Ray, this reply wont be in specific detail 
but may help. Someone out there may have 
schematics but I doubt that the maker released 
their tech = data. YES! You can make 
modifications to any TS-1000 memory device to 
use with the TS-2068, and it is worth the effort 
to try. Generally, the memory chips of that era 
were 2 and 8K chips. Tt would not be cost 
effective to replace these old chips, but if 
they are still good, then the 64K RAM board 
would be worth salvaging. 


The BASICARE system is the neatest 
expansion package that I have ever seen for any 
computer. It consists of several "stackable" 
modules. As each module stacked on top of the 
one below, the I/O buss of each mated. The 
first module which connects to the computer is 
named "Persona" and is a I/O Buffer for the Z-80 
CPU buss lines. | Since all of the TS-1000 1/0 
buss lines are "pin compatable" with the 
TS-2068, the Persona" unit should work almost AS 
IS with the 2068. One more TS-2068 buss trace 
(MREQ) should be brought into the Persona unit 
as is shown in the diagram given in this issue 
about the Oliger 64K Ram. This MRH) line should 
be furnished to(N64K Ram that you modify. The 
rationale given in the January UPDATE article 
about modifying the Oli RAM should be followed. 


Generally, the ICs used and the method for 
coding for memory addressing during the TS-1000 
era was fairly standard, and it is likely that 
the 64K Ram that you have will have almost 
identical coding chips to those in the Oliger 


RAM. If not, then you will need to obtain data 
sheets for the chips used (Jamesco Electronics 
is a good source). Or call me and I'll likely 
have the data sheets that you need. The memory 
o£ the TS-1000 modules must be re-coded to the 
TS-2068 memory map. 


I£ I were you I would set aside the modules 
that contain the printer interface and the DROM. 
The task of making these useful for the 2068 
involves re-design of the circuits for another 
purpose. Instead, the more productive approach 
would be to re-code the 64K Ram for two 32K dock 
banks as per the Oliger Ram conversion. Then 
later, as the project develops, you may want to 
re-design these boards for another purpose. 


The Basicare system offered two branches of 
modules for using one 64K RAM or (up to) 16 64K 
modules. The "second" stacked module, which 
could be left out, is named "Minimap". This 
module provided addressing for 16 "pages" of 64K 
RAM Modules, for a total of one mega byte of 
RAM. If you have this unit, and more RAM 
modules, then a study of Mr. Bothner's article 
in this issue could provide guidance for 
modification of your "minimap" module. Notice 
that Mr. Bothner starts his project with a I/O 
Buss BUFFER board built upon a Zebra Proto 
board. You already have 99% of that unit in 
your "Persona" module. Believe me, a I/O buffer 
is one BIG project to build. About half way 
through it takes on the appearance of a "Afro 
head". 


So, you really have two options. You can 
make your Basicare modules into "Switchable Dock 
Bank RAM" as we do with the Oliger Ram 
modification. Or, you can follow the lead given 
by Mr. Bothner to make a more elaborate system. 
UPDATE will present a follow on article that 
gives Mr. Bothner's corrected TS-2068 PROM. But 
as shown in his article, he already has several 
64K banks in operation. Also note in his 
article that a auxillary power supply is a part 
of his system. Basicare also had a auxillary 
power supply module that was needed as more 64K 
Rams were stacked. 


‘The advantage that you start with is having 
neatly packaged modules which can be modified to 
become a TS-2068 system, I can visualize them 
pretty silver modules stacked behind the TS-2068 


providing a substantial increase in memory 
capacity. Go fer it! 
QUIG  Non-exclusive Statements 
You may not always want parentheti- 
2 cal statements in a variable re-valuation, 
nd € to be mutually exclusive. 
spac Consider a game where a player re~ 
eu ceives 10 points for hitting at least ten 


targets, and a bonus of 20 points for hit- 
ting exactly ten targets. 
LET SCORE=SCORE+ 
(40 AND H>9)+ 
(20 AND H=10) 
When H is ten, both expressions are 
8 coiad SCORE is incremented by 30. 


*e* MAX DOS *** 
A Study of DUAL DOS in the TS-2068 


For several weeks UPDATE has been testing TWO 
SIMULTANEOUS Disk operating systems in the TS-2068. 
This is the Oliger SAFE DOS and the Larken DOS. The 
hardware hook-up is the FULL "two board" Oliger 
system and the Larken LKDOS cartridge in the Dock 
Port. Extensive operation with the combination has 
revealed an almost complete compatability between 
the two systems. The only incompatabilities are 
minor and will be discussed. For the the test two 
disk drives were used, but a single drive could have 
been used as well. Drive zero had a disk formatted 
as a Larken Disk, and drive 1 had a disk formatted 
as a Oliger disk. 


In the beginning the Oliger V2-40 EPROM was 
being used. Actually the instructions provided with 
the Larken-LKDOS cartridge calls for the removal of 
the Oliger "board A" which contains the SAFE EPROM. 
But I'm adventurous and I decided to keep both 
Oliger boards in and see what would happen. The 
system seemed to work O.K. Both the Oliger Dos and 
the Larken DOS operated normally. After about a 
week of operation I kinda got used to having DOUBLE 
the amount of EXIRA BASIC functions. All of the 
Oliger functions worked and so did all of the Larken 
functions. AND, it did not make any difference 
which DISK was used for actual SAVE and LOAD. In 
fact, ALL of the SYNTAX structure for BOTH systems 
can be used in program lines, or can be used in the 
direct mode. We will explore this a bit. 


Oliger SAFE commands use the slant bar "/" as 2 
designator. Example: "SAVE/ "title". The Larken 
commands use <FRINI# 4: SAVE "Title.Bl">. The disk 
in use is selected by <LET/d=0> or <PRINT$ 4: GO TO 
b. Now suppose a program line were: <100 
SAVE/"Eile 1"DATA a$(): PRINT #4: SAVE "file 
.aS"DATA $()>. The TS-2068 accepts the syntax and 
the line enters OK. When the line executes, the 
first command results in the disk "automatically 
switching" to the Oliger disk and the data file is 
SAVED to the Oliger disk. Next, the Larken syntax 
results in an automatic switch to the Larken disk, 
and a SAVE of the same data file to the Larken disk. 
Both systems "remember" its own disk as elected by 
<LET/d=> for Oliger, and <PRINT#4:G0 TO> for Larken, 


Likewise, all other disk commands and all Extra 
Basic commands operate exactly as they would 
normally. The nice part is that all of these 
functions are additive, and operational as ONE BIG 
DOS. The Oliger FAST FOR counter works with LARKEN 
programs. ‘The Larken Window functions work with a 
Oliger program. In fact, a program loses its 
idenity as a Oliger program or a Larken program. Tt 
can be saved or loaded in either disk format, One 
can coose which simply by using one DOS SAVE or LOAD 


command, or the other. Now, if T receive a disk 
from someone, I can load it if it is in either 
format. me can operate entirely with one disk 


format if he chooses, AND use All of the extra basic 
functions of BOTH Larken and Oliger systems. But 
there are strong advantages of using two disk 
formats. 


Each of the two systems commands the Disk Drive 
theough the Western Digital controller chip. There 
are certain Files Management functions which are 
more versatile when using the Oliger format, and 
others that give more capability when using the 


_ Oliger__systems. 


UPDATE July 1988 
Articles & Reviews 


Larken Format. So the use of two diskettes does 
provide more options of disk files management. In 
effect, "MAX DOS" is controlling double the amount 
of disk storage- two diskettes under automatic 
-controll. Now "MAX DOS" is my own coinage. I 
wanted something that would denote a BIG Disk 
Operating System, as opposed to "a choice of one or 
the other". Besides, I always like to twit the IBM 
users. Their "MS DOS" sounds like a "mess", while 
"MAX DOS" sounds like the "mostest". 


Compatability with Existing Hardware: Both 
Oliger OS and Larken DOS are compatable with the 
Spectrum ROM Switch. Both are compatable with the 
Zebra OS-64, but the LRDOS Cartridge takes up the 
Dock Port. The Larken literature discribes an 
additional IC that can be pigay~backed to accept 
either the OS-64 EPROM or the Spectrum ROM IC. 
UPDATE fas not tested this modification. The SPDOS 
software on-Disk is compatable with both Larken. and 
The loading of SPDOS would give a 
third FORMAT and enable the use of RAMEX disk 
prograns. 


COMPATABILITY of EPROMS: UP-DATE received the 
new Oliger V2-52 EPROM and the system crashed when 
the LK cartridge was installed. A call was made to 
John Oliger who seemed confident that the conflict 
was caused by “two different brands" of EPROM used 
by the two systems. Apparantly the EPROM that has 
the "penthouse" on top cannot be used with the 
Larken Cartridge. I sent an old "flat top" EPROM to 
Jom for reprogramming. When it was returned, the 
compatability was restored. Since then, all of this 
magazine issue pages have been prepared and printed 
with BOTH Dos systems installed. Me 
non-compatability exists. | Both Larken and Oliger 
systems have NMI functions. These functions clash 
and the NMI button cannot be used. To date, this is 
the only conflict found. 


Conclusions: MAX DOS is a reliable combination 
of two very capable disk operating systems, and two 
excellent Tool Kit extensions of the Basic lanquage. 
This combination operates as if the two systems had 
been’ designed as one large system. The tool kit 
extensions are not just Basic Commands, but are 
groups of functional routines. MAX DOS provides as 
many disk management functions as any DOS used by 
any computer. The extra tool kit functions greatly 
extends the job tasks that the computer can perform. 
These new Functions are many and are unique. No 
other computer has them in their repertoire of 
functions. Some of the notable attributes of MAX 
DOS are listed below. Then a_ sample bit of 
programming will be given to conclude the report. 


1, Disks prepared by either Larken DOs or 
Oliger DOS can be read by MAX DOS. 


2. Disks may be prepared for use by others who 
have single Larken DOS or Oliger DOS. 


3. The plethora of Extra Basic Tool Kit 
functions of Oliger DOS and Larken DOS are combined. 


4, The Larken and Oliger Command Syntax for 
both Disk operation and Tool Kit Basic may be mixed 
in programming. 


5. The system exercises direct conrol of two 
disk drives simultaneously. Switching is automatic. 


9 6. The system makes use of the excellent Oliger 


printer driver in EPROM. No need to load another 


printer driver. 


7. No RAM memory is used by either Oliger or 
Larken DOS, thus MAX DOS does not use any RAM. 


8. The TS-2040 printer is directly supported, 
simultaneously with a Centronics printer, or 
separately. 


9. Direct low res Screen Copy is available by 
simple conmand. 


10. No conflict with Spectrum ROM, or any Extra 
Memory device. 


9000 BORDER 1: PAPER 1: INK 7: C 
~~ LS : LET /p=o: RANDOMIZE USR 100 
: OPEN #4,"dd" 

9030 PRINT AT 10,0;"Instal1 Form 
atted disks in:"''"Oliger Formt 
in Drive 0"''"Larken Format in 
Drive 1"'''"Enter When Ready": P 

AUSE 0: CLS 

9040 PRINT AT 10,0;"SELECT:"*'"< 
1> To Move Screens TO LARKEN DIS 

K""'"£2> To Move Screens TO OLIG 
ER DISK": INPUT b: IF b<1 OR b>2 
THEN GO TO 9040 

9050 PRINT AT 10,0;"Which way to 
Move?"''"<1> Qliger to Larken"' 
'"<2> Larken to Oliger": INPUT c 
: IF c<l OR c>2 THEN GO TO 9050 
9060 CLS : PRINT AT 10,0; "Instal 
1 Disk in Drives"''"Then ENTER": 
PAUSE 0: CLS 

9070 INPUT “Nunber of Screen fil 
es to move? ";m 

9080 FOR n=1 TO m 

9085 IF b=] THEN LET /d= 


CAD /a$SCREENS + 
: PRINT #4: GO TO l: PRINT #4: S 
AVE aSSCREEN$ : NEXT n 

9090 IF b=2 THEN PRINT #4: GO TO 
1: PRINT #4: CAT "",: INPUT "Sc 
reen file Name?";a$: PRINT #4: L 
OAD a$SCREENS : LET /d=0: SAVE / 
aSSCREEN$ : NEXT n 

9100 STOP 


UPDATE July 1988 
Articles & Reviews 
CIM MAGAZINE QUITS 


Chet Lambert, owner publisher of CIM Magazine, 
announced in the June issue of CIM that he is 
quitting publishing CTM magazine. I regret that CIM 
is finished and wish Chet and Tina well in whatever 
they decide to do. CIM was oriented toward the 
support of Amateur Radio Operators and has 
contributed eminently to the furtherance of PACKET 
Telecomunications. Chet really tried to develop 
support for the Timex-Sinclair users, by fulfilling 
the remaining subscrition obligations of TS Horizons 
when it quit publishing. Many TSU subscribers did 
not realize that Chet did this FREE. 

A Monthly magazine requires a steady volume of 
industry advertising to support costs. The lack of 
advertising support from Amateur Radio suppliers 
reveals a steadily declining market for Amateur 
equipment. Being a licensed Amateur Radio tor, 
I can express my belief that the decline in the 
market is caused by our-own-ARRL, which pursues a 
dielard policy designed to limit the licensing of 
new General Class operators and thus avoid growth. 
The result is an aging "old fogy club" wanting to 
guard their ranks and unwilling to up-date with 
modern equipment. 

Telecomunications with RADIO and COMPUTERS will 
be the break through in the 1990's. Chet had a 
vision of this with PACKET. Unfortunately the 
doddering old fogy ARRL wants to keep on keying away 
nonsense with Morse Code and twenty year old Comm 
gear. The result is a stagnated radio industry and 
a lack of opportunity for a fresh new magazine like 
CIM to survive. So, Computerists must take up the 
challange and develop Telecomunications. I kinda 
got carried away, excuse me. Good Luck Chet and 
Tina! Stop by when you're down this way and I'll 
take you sailing. 


Did you know: 


‘that data is moved to / from cassette at a rate of about 150 
chrs per second? 


"that data is moved to / from disk at a rate of about 10200 chrs 
per second? 


"that disk is about 68 times faster than cassette? 


that the ordinary jogger jogs at a speed of 4 mph 


‘that if you jogged as much faster than the ordinary jogger, as 


disk data transfer is faster than cassette data transfer, then 
you would jog at a speed of 172 mph? 


"that a flea can jump more than 20 feet? 


‘and his departure accellertion is more than 60 G's? 


‘and if you could jump as far, in comparison to size, you could 
jump from Miami to Detroit? 


-three hops Coast to Coast, then three to Alaska, one to Attu, 
another to Japan, then 6 hops across Asia to Siberia, and 4 more 
to the East Coast- around the World in 18 leaps! 


Airplanes would be obsolete if only we humans had comparative 


10 


hopping abilities as fleas! 


"pos-64" A Review By Pete Fischer 


"Phoenix Pete" Fischer is THE GURU 
of TS-2068 Telecomputing, having 
written a book on the subject. 
Thanks "P.P" for this nice 

input. Your expertise is always 
welcome in the pages of UPDATE! 


ABSTRACT: This is a review of MakeDOS-64, a 
machine code system which allows use of the 
OS-64 cartridge code on an AERCO Disk Drive 
without loss of Aerco DD commands, and with 
access to the full 256K ram via bank switching. 
(review by Pete Fischer) 


Short Description of DOS-64 

DOS-64, like the OS-64 cartridge itself, 
sits in the Dock Bank. However, it DOES take 
away a small portion of ram in the Home Bank. 
It features the full use of AERCO Disk com- 
mands, just like the AERCO version of OS-64, 
but that version gives you only 17K of BASIC 
area. This version keeps the normal 33K that 
OS-64 would leave you. It also includes a 
number of other features not found in either 
the Aerco DOS nor the OS-64. Read on! 


Description of the OS-64 Cartridge 


Before I go into MakeDOS-64 itself, 
though, let me describe the 0S-64. It's not as 
cut and dried as it first seemed. True, you 
just plug it into the cartridge port & turn on 
the machine. But it's not QUITE that simple. 
For one thing, you've lost nearly 5K of free 
memory at the bottom of BASIC. This is never 
discussed in the Zebra docs. Thus, loading any 
program longer than 33+K will crash the 2068. 
Also, you've lost some of the commands in 
BASIC. FLASH is useless, since it required 
Display File 2 in order to work. Once you set 
either PAPER or INK, the other is set to it's 
compliment. (i.e. PAPER 4 [green] will set the 
INK to 2 [red]). This change effects all the 
ink on the page- so that it's impossible to 
have more than one color of INK on any page. 
Also, you can't change the BORDER to a dif- 
ferent color than the PAPER. You also lose 
BRIGHT and INVERSE. 

Jeff Street, the Zebra programmer who 
wrote OS-64, DID manage to include printer 
drivers for 4 centronics interfaces, namely, 
the Aerco/Oliger, Tasman-B, Tasman-C and A&J. 
The 2040 is NOP supported. These are meant to 
drive Epson- compatible printers. But you can 
also load your om custom driver, and the docs 
tell you where to load it and how to call it 
(can be either centronics or serial). 

Since screen display uses display file 2, 
a normal SCREENS will not work to SAVE or LOAD. 
You must SAVE/LOAD two seperate CODE files in 
order to deal with a SCREEN in 64 col mode. 

At first T thought a BASIC program had to 
be specially written for OS-64. But then I 
thought, why don't I just LOAD in a program 
written for 32 col.,and see what happens? 

So I did, and to my surprise and delight, 
most things worked. There WERE problems; such 1 fe 


that program less appealing. 


UPDATE July 1988 
Articles & Reviews 


as when a program used 2 or more INKs in the 
same menu. The screen would flash through all 
the different colors as it printed out the 
screen, finally ending up with green ink and 
red paper which was unreadable even on my RGB. 
So I had to fix all those (this can take some 
time on a long program). 

Any text which was centered in 32 col. is 
now to the left, and depending on how the 
PRINC command was used, some lines of text may 
stop at 32 col, while others go on to 64 col. 
So these PRINT statements may need some editing. 
But once you've converted a program, it's done. 
You never have to do it again. 

So what is the advantage of 64 col.? The 
first attraction to me was the capacity to run 
Zterm-64. But the small buffer and bugs made 

It lets you put twice as many colums on 
the screen, with the same number of rows. This 
doubles the information on a page. This is 
particularly useful when you're using software 
that stores and displays lots of data, such as 
word processing, spreadsheet, accounting, 
database or telecommunications. It can make 
much better menus, as I always seem to run out 
of screen before I run out of options. You 
will see less of the "scroll?" prompts on 
your screen, Although I can't help but wish we 
had more rows as well as more columns... 

One last note on the OS-64, if you have 
the JLO disk drive, you need to have OS-64 ver 
1.72 in order to use the NMI "snapshot" save. 


The Difference Between OS-64 & DOS-64 


The main difference is complete compat- 
ibility with the Aerco system without any 
loss of free ram. Also of critical interest is 
the access to the full 256K rambank via bank 
switching. These banks can be had by a simple 
OUT command. Oh, what wailing and gnashing of 
teeth could have been saved if Aerco had sold 
this software with their 256K upgrade! (NOTE: 
In his recent book on advanced M.Code Program- 
ming on the 2068, Dr.Lloyd Dreger discusses 
this scheme of access to the 256K. He gives 
credit to David Hill. Keith Watson wrote the 
code originally, and gave it to David to 
publish in his newsletter. This is just a 
misunderstanding on Dr. Dreger's part). 

Another feature that Keith worked in is a 
program by Jack Dohaney called KEYWORDS. For 
those of you who are unfamiliar (as I was) 
this program allows you to enter the TIMEX 
BASIC keywords, one letter at a time. This is 
useful to those who have custom keyboards 
without legends. You can toggle this feature 
on and off with a PRINT USR statement. 

There are two additional character sets, 
BOLD and IBM PC style. These improve readabil- 
ity on marginal monitors. 

You can alter the total maximum number of 
directories on a disk. We always complained 
that 31 was too few. But now that the number is 
doubled for DD diska ard tripled for QD disks, 
it seems to take a significantly longer time 
for the system to search a directory. This 
gives you the best of both worlds. 

While it's true you can "customize" the 


OS-64 cartridge for a large number of options, 
you do so using POKE statements which must be 
re-entered everytime you turn on the computer. 
Since Make~Dos comes off a disk, however, you 
can customize it once and for all (and easily 
re-configure it later). Then, you save the 
customized version and DOS-64 "Wakes-up” in 
any setup you want! 

This "customizing" is done by a menu- 
driven program that's quite painless and easy 
to follow. This is MakeDOS. All four of the 
original printer drivers are still there. You 
can choose one of those, or your own custom 
driver as permanently enabled. You can also 
choose various printer configurations such as 
line length, and print density. There is also 
an option to increase the total of numbered 
lines in BASIC from 9999 to 16383. 


_THE GOOD POINTS 


1. Permanent 64 Col. display with com 
pletely normal DOS operation. 

2. Full access to the 256K ram upgrade. 

3. All the original printer drivers of 
0S-64 are there and any one can be 
permanently enabled. 

4. There are 2 new character sets. 

5. Jack Dohaney's KEYWORDS program is 
available for use. 

6. Most 32 column BASIC programs are 
compatible, or require minor modifi- 
cation. 


THE BAD POINTS 


1, I miss a hardcopy manual for this 
product. You don't need one much, but 
it's good to have. 

2. Some of the explanations given on the 
help screens are a bit technical. For 
tecmical users, they will be welcome. 
But others may be thrown. 

3. You lose about 5K of BASIC (which you 
also lose with 0S-64) 


"I was just writing something for my om 
uses." That's how Keith described it to me in 
his self-effacing manner. He ended up spending 
several hundred hours and many calls to AERCO 
to get the straight story on the 256K. How many 
really great software packages started out as 
someone writing something for their own use. 
This software is available from RMG, who 
has gone to great lengths to support AERCO 
users. It costs $15 +$2 P&H. Or from Keith. 
Brilliant programmers are worth supporting. 
See pg 14 of January UPDATE for 
addresses of Suppliers. 


The Mscript File Printer 
that printed the above Article 


UPDATE Addendum: The Zebra OS-64 cartridge 
provides a nice 64 column display, yet when a 
menu or information display does not require 
such packing on screen, the regular 32 character 
display provides more comfortable reading. The 
OS-64 does not LOCK one into the small print of 
a 64 column line, Qe can switch AT WILL 
between the two display files. When the 32 col 
display file is switched IN, all of the color 
attributes may be used for glorious screen 
displays. Following are two “switch routines" 


12 


UPDATE July 1988 
Articles & Reviews 


to be used with <GO SUB zb - or GO SUB ts>. The 
ts routine:  <9000 OUT 255,0: PAUSE 10: CUT 
244,0: CLS: RETURN>. The zb routine: <9002 OUT 
255,62: PAUSE 10: OUT 244,3: CLS: RETURND. 

Just. remember that when you have a Zebra 
0S-64 cartridge installed, all LPRINT, LOAD, 
SAVE, commands exercise the routines in the 
OS-64 ROM, and NOT the normal TS-2068 EXROM. 
Therefore one must always be in the 64 col 
(CS-64 Display) before using these commands. 
Otherwise a crash will result. Preceed all 
LOAD, SAVE, LPRINE commands with <GO SUB zb>. 
I£ you want 32 column presentations on screen, 
<G SUB ts> first. If you want 64 col screen, 
<GO SUB zb>. Neat, eh? 

The review article by Phoenix Pete came in 
in a MSCRIPT file, which gave me a chance to try 
out the "MS-TAS" utility to print it without 
loading the MNSCRIPT software. I always get 
tangled up with Mscript's and Tasword's 
elaborate Control Codes for trapsying around in 
the two programs. So, the following Utility was 
developed and tested to print mscript files 
without need to have mscript loaded (or to learn 
it durn it). Note that Pete's text has a ragged 
right margin, which gave the other "MS~TAS" 
utility a problem. This was solved by using a 
"variable stepping counter" to end the line 
print each time a ENTER (code 13) is detected. 
Note that the last input of “line width" in line 
9000 results in POKING the MAXIMUM printer line 
to the Aerco precde. 

Then counter “n" 
width". 


is stepped to the "line 
However the n counter STEP is a pseudo 
value. It could be any figure “more than the 
longest line to be printed". This is because at 
line 9015 the "y" counter stops when a code 13 
(ENTER) is detected. Then the "n" counter is 
set back, so that when it STEPS it will step to 
the memory address of the next character to be 
PEEKED and printed. Chomp on that a bit and you 
may get some more ideas about making STEP in a 
FOR counter a variable figure. 

Now Pete just assumed that I'd load up 
Mscript and print his document, so he didn't 
tell me what address the code started, nor its 
byte length. So, the "FIND" routine at line 
9965 was added. <GO TO 9965> will find START 
and END memory addresses of the Mscript code 
file and print the info on screen. Then <RUN> 
and use this information for the INPUT PROMPTS 
after the DATA disk catalog is on screen. 

In line 9000, the prcode file name, 
Randomize #, and the line width POKE, are for 
the prcode version given in the Apr/July Issue 
Disk. | Your customized Aerco preode may need 
different figures. This utility will be 
included in the October (next) Issue Disk (no 
room in the current Apr/July disk). 


8980 REM * MSCRIPT FILES PRINTER 


8985 
8990 CLOSE #2: BORDER Os PAPER 0 


"+ Utility t 
o PEEK and Print out MSCRIPT Da 
ta Files from Disk.""""* Does 
not require Word Proc to be loa 
ded." DOES Require;"''"1, A 
erco or Oliger Printer int£c 

to be installed.""'"2. Centroni 


Cont > 


es Printer ~CN~ READY''''"SET E 
QUIPNENT, THEN ENTER": PAUSE 0: 
cas 

9000 OUT 244,1: CAT "Cclear.bin" 
13 CAT "Cpreode.bin",: RANDOMIZ 
B USR 64500: INPUT ; "Install Da 
ta Disk, ENTER";y$: CAT "",: IN 
PUT "Input MS~TAS Disk File Nam 
e (all between Quotes).";z$ 
: INPUT "Input File Starting Ad 
dress";sa: INPUT "Input File By 
te Length";bl: INPUT "Printer L 
ine Width";11: INPUT "Start lin 
: INPUT "Total Col 
POKE 64504,11-1: CA 


9002 OPEN #2 

4b1 STEP 11 

9005 FOR y= TO ntll-1 

9010 LET c=PEEK y 

9015 IF c=13 THEN PRINT : LET n 

=ytl-1l: GO TO 9027 

9020 PRINT CHRS c7 

9025 NEXT y 

9027 LEY lc=lc+l: IF lo>tc THEN 
3 CLOSE #2: LET lo=1: OU 

2 CLS + PRIN 

T "Adjust Page, THEN ENTER": PA 

USE 0: OPEN #2,"P" 

9030 NEXT n 

9035 CLOSE #2 


FOR n=sa TO sa 


UPDATE July 1988 
Articles & Reviews 


9040 PRINT ''"<1> For next file” 
"'"<2> To Quit": INPUL "Choice? 
“yar IF a<l OR a>2 THEN GO TO 
9040 

9045 IF a=2 THEN STOP 

9050 GO TO 9000 

9060 REM ** Find Start and End 

of MSCRIPT file. 

9965 LET a=1: FOR n=46000 TO 653 
67 

9970 IF PEEK n<>0 THEN PRINT "S 

tart Adr=";n: GO TO 9990 

9975 NEXT n 

9990 FOR n=n TO 65535: IF PERK n 

=0 THEN PRINT "End of File=";n 
: STOP 


DENSE PACK BASIC, and the use of LOGICAL OPERATORS 


There has been a 


considerable 


amount of questions and interest about Dense Pack 
programming tecmiques and the use of Boolean Logic.—-While: browsing through antique ZX 


publications I came across an interesting article written in 1983 by Sharon Aker (Where 
Since Sharon's article merges nicely with my feeble attempts to 


are you 


re-printed. 


now Sharon?). 
explain the use of Boolean Logic 
Also interesting 
Sinclair 2X-81 with 1K total Ram. 


in Basic programming, 


is the setting: 


and can provide increased programming efficiency. 


The Logical Operators sharon Zardetto Aker 


AND and OR have two distinct us- 
ages in Sinclair Basic. One mirrors their 
use in English and is easily understood; 
the second is less straightforward, but is 
an extremely versatile programming 
technique. NOT, the third logical op- 
erator, is unfortunately overlooked or ig- 
nored by many beginner programmers; 
it, too, can be a powerful programming 
tool. 


AND and OR 
IF A<10 AND B<10 THEN... 

IF A<10 OR B<10 THEN... 

In the first example, the command 
following THEN is executed if both con- 
ditions are true (the conditions being 
A< 10 and B < 10). In the second exam- 
ple, as long as either condition is true, 
the command will be executed. 

AND has a higher priority than OR 
and is performed first regardless of its 
position in the conditional statement. 

IF _X>5 OR Y>5 AND Z>5 THEN. 
This statement sets up two conditions: 
1) 5 
2) Y>5 AND Z>5 

Since they are linked by. OR, either one 

being true will cause the command to be 

executed. 

To circumvent the computer’s auto- 
matic ordering of operations, paren- 
theses should be used. 


1F (X58 OR Y>5) AND Z>5 THEN... 


The two conditions in this statement 
are: 
1) X>5 OR Y>5 

2) Z>5 
Since they are linked by AND, both con- 
ditions must be true for command 
execution. 

You should note that, in this last 


her excellent article is 
The time~ Sept. 1963. 
Boolean Logic is useful in programming ANY computer 


‘The computer~ 


You must understand the computer's 
view of “truth”: a true condition is 
“4”; a false condition is “0”. 


example, there are actually two combi- 
nations that will satisfy the computer’s 
truth-check: 

1) X>5 AND 2>5 

2) Y>5 AND 2>5 


Instead of IF-THEN 

AND and OR also have another, en- 
tirely different, usage in Sinclair Basic, 
one that allows you to combine several 
IF-THEN statements into one logical 
statement that does not even use IF- 
THEN. 

IF A<10 THEN GOTO 125 

IF A=10 THEN GOTO 300 

IF A>10 THEN GOTO 480 
can be rewritten: 

GOTO (125 AND A<10)+ 

(300 AND A=10)+ 
(480 AND A>10) 

To translate this into understandable 
English, read each AND as “if.” The 
computer looks at each one of the par- 
enthetical statements and checks the 
truth of the expression following AND. 
If that conditional statement is true, the 
value of the parenthetical statement is 
set at whatever precedes AND; if the ex- 


pression is false, the statement is as- 
signed a 0. 

So in this last example, if A is 14, the 
line will work out as in Figure 1. The 
computer will GOTO 480. 


Mutual Exclusivity 

The parenthetical statements in the 
above example are mutually exclusive; 
that is, if one is true, the others have to 
be false. That is not always the case, and 
you should plan carefully in a situation 
like the following: 

IF N<10 THEN GOTO 100 

IF N=10 THEN GOTO 150 

1F N<20 THEN GOTO 200 

Obviously, N can be less than 10 and 
less than 20 at the same time; so can it 
be both equal to 10 and less than 20. As 
long as the IF-THEN statements are in 
the right order in your program (“right” 
depends on the effect you want), there is 
no problem because the computer will 
act upan the first true statement it en- 
counters and never see the one(s) 
following. 

However, if you rewrite these state- 
ments using the logical operators, you 


Figure 1. 

GOTO (125 AND A<10) + (300 AND A=10) + (480 AND A>10) 
false false true 

GoTo (0) + (0) + (480) 

Figure 2.. 

GOTO (100 AND N<10) + (150 AND N=10) + (200 AND N<20) 
false true true 

GoTo (0) + (150) + (200) 


13 


would have a big problem. If N is 10, the 
computer would make the evaluation 
found in Figure 2 and execute GOTO 
350. 
Further definition of one or more of 
the conditions, until the parenthetical 
statements are mutually exclusive, is 
necessary. For instance: 
IF N<10 
IF N=10 
IF N<20 AND N>10... 
Written logically, 
GOTO (100 AND N<10)+ 
(150 AND N=10)+ 
(200 -AND (N<20 AND N>10)) 
In the last parenthetical statement, 
the first AND operates as “‘if.” The sec- 


—~ond AND operates in its usual manner 


requiring that both conditions be true 
for the total expression to be true. The 
inner parentheses are not strictly nec- 
essary, since the first AND will always 
be used as the “if’; they were included 
here only to make the example clearer. 


Other Commands 
Since the entire logical expression 
boils down to a number, it can be used in 
place of a number with many different 
commands: 
PRINT AT (5 AND Z>14)+ 
(2 AND Z<5),10;'‘OKAY"' 
PLOT X, (17 AND B=12)+ 
(27 AND B<>12) 
GOSUB (500 AND L=10)+ 
(800 AND M=10) 
PRINT (0 AND N<>10)+ 
(N AND N=10) 
PAUSE (120 AND T<10)+ 
(380 AND T>=10) 


Strings 

Strings can also be used with logical 
statements. If the conditional expression 
is true, the parenthetical expression is 
“equal to” the string before AND. If the 
conditional expression is false, the state- 
ment is considered to be an empty 
string. So: 

IF A>B THEN PRINT ‘ ‘TOO HIGH’’ 
IF A<B THEN PRINT *‘TOO LOW’' 
can be rewritten as: 

PRINT (‘‘TOO HIGH’' AND A>B)+ 

('*TOO LOW''’ AND A<B) 

When A is larger than B, the statements 
will be evaluated: 
PRINT (‘'TOO HIGH’')+(‘‘'’) 

You can also assign a string value 
with this syntax: 

LET P$=(‘'TOO HIGH’' 

AND A>B)+ ° 
(* ‘TOO LOW'' AND A<B) 

A logical expression for strings or 
numbers does not have to consist of 
alternative choices; a parenthetical logi- 
cal expression can be inserted into 
an otherwise straightforward command. 
Consider a program that would display a 
multiplication problem of two randomly 


~ Tf BDA X+ 


generated numbers (A and B) and a 
player’s answer (C). If the answer is 
wrong, you might want it marked with 
an asterisk. 
PRINT A;‘‘+"! 
TAB 10;(‘'* 
AND C<>A+B) ;TAB 11;C 
If the answer is correct, nothing will 
be printed at TAB 10. 


Variable Re-valuation 

Logical expressions that change the 
value of a variable are easy to use. Here 
is one example, and the ways it would be 
evaluated. 
LET X=X+(5 AND B<A)+(7 AND B>A) 
If BSA X+ (5) + (0) =(X+45) 


if B=A (0) + (0) =(X) 
As you can see, there is no need to 
write a statement for the B=A possibil- 
ity if you want X to remain the same in 
that situation. 
If the variable is to be decremented, 
change the plus sign to a minus sign: 
LET N=N+(5 AND P=0)— 


X+ 


(5 AND P<>0) 
This will be evaluated in one of two 
ways: 
If P=0: N+(5)-(0) = Nt5 
1f P<>0: N#(0)-(5) = N-5 
Using OR 


While AND is used for strings and 
numbers, and variable re-valuation 
involving addition and subtraction, OR 
is only practical for re-valuations involv- 
ing multiplication or division. A study of 
the chart in Figure 3 might help you 
understand why this is so. 

When OR is used in this construction, 
read it as “unless”: 

LET N=N+ (10 OR ADB) 

If B is less than A, the statement is 
true. It is evaluated as 1 (as noted in the 
chart), and reads: 

LET N=Ne(1) 
and the value of N does not change. 

If B is not less than A, the parentheti- 
cal statement is assigned the value of the 
number before OR: 

LET N=N+( 10) 

So, N is multiplied by 10 unless B is 
less than A, in which case N remains the 
same. 

If you were writing a program to cal- 
culate new prices for merchandise going 
on sale, where items less than $100 were 
to be reduced by 10% and all others by 
20%, your statement would read (P is 
the current price): 

LET P=P+(.8 OR P<100)+ 

(9 OR P=100) 


‘The evaluations are: 
If P<100: 
lf P>=100: 


(Oy (7) (X47 


UPDATE July 1988 
articles & Reviews 


Applications 
If you would like a command exe- 
cuted every second time it is en- 
countered in a loop, use NOT to change 
the true/false value of a variable back 
and forth. With: 
1F V THEN... 
at the beginning of a loop, and: 
LET V=NOT V 
later in the loop, V will be true on every 
other loop. 
By using 
LET E=N/2-iNT(N/2) 
E is zero whenever N is an even number. 
To have a command executed only when 
N is even, use 
IF NOTE THEN... 
Similarly, —— = 
LET I=N-INT N 
means that I is zero whenever N is an 
integer, and 
iF NOT 1... 
will be a true condition when N is a 
whole number. 


Priority 

NOT is assumed to apply only to the 
number to its right, unlike the other 
logical operators, which automatically 
apply to an entire expression. 

NOT B<C 
is interpreted as: 

(NOT B)>C 

NOT has priority over both AND and 
OR, so the following conditional state- 
ment would be processed in the order of 
innermost brackets first: 

IF [[[NOT A] AND B] OR C] 

The use of NOT can, of course, be al- 
tered by the use of parentheses. 


NOT 

To make use of NOT, you must first 
understand the computer's view of 
“truth.” Conditions in an IF-THEN 
statement are evaluated, and a true con- 
dition is assigned a one, while false one 
are assigned zero. (Note the “result” col- 
umn in Figure 3.) 

Furthermore, any mathematical ex- 
pression whose result is zero is consid- 
ered false, while a non-zero result (even 
a negative number) is true. 

NOT changes the true/false value of 
an expression: 

If A is false, NOT A is true. . 

If A is true, NOT A is false. 


Figure 3... ___ 


OL Characteristics 


About half of the subscribers to UP-DATE are 
owners of both the TS-2068 and the Sinclair QL, the 
jatest member of the Orphan Computer family. 
Comments received about the QL range from pure 
disgust to enthusiastic praise. But there is one 
common denominator amongst the QL owners and that is 
a desire to learn how to use this strange computer. 
It is indeed a strange one (to me) and one that 
requires a considerable amount of study. Having 
only recently purchased a QL, I ot not yet ready to 
become your QL Guru. So, let us begin learning the 
QL together while continuing to treat our TS-2068 as 
our primary system. Eventually the QL will become a 
work horse to endure for many years to come. But I 
-am—~sure -that~-my—TS-2068 _ system —will—never-be 
discarded no matter how useful the QL becomes. 

We TS-2068 users enjoy several advantages when 
we begin to use the QL. First, with few exceptions, 
all of our programming knowledge can be transferred 
to the QL. The key-words and tokens mean the same. 
"QL BASIC" just gives us an expansion of the 
language that we have been using. So, that part of 
the QL learning curve should come fairly easy. 
Since we can use our learned TS-2068 language, this 
allows us to program the QL in "simplese" while 
picking up the more advanced QL BASIC and Super 
Basic. ‘Then, as we upgrade, still more language 
extensions and capability are added, such as "super 
tool-kit". In fact, the QL can become the most 
powerful of all personal computers available in the 
market places of the World, more powerful than the 
IBM XT. 


also a PLUS with equipment 
compatability. Qur disk drives and monitors are 
compatable with the QL. I first started off sharing 
a pair of 80 track drives and a RGB monitor with ny 
TS-2068, But that soon became too much of a 
switching job and I gave in and spent some money on 
a second pair of drives and a Magnevox RGB monitor. 
WHICH, leads us into the subject of EXPENSE to get 
going with the QL. One can go "whole hog" as I did, 
or progress in stages. A composite monitor can be 
picked up for as little as $65.00 via catalog 
shopping while letting the budget build up for a RGB 
monitor. And, a full page width serial printer can 
be purchased for as little as $39.95. I have one of 
these old IBM thermal printers to do listings and 
scratch printing. 


There is 


There have been many comments to the effect 
that "By the time one buys disk drives, monitor, and 
Trump Card, one has enough invested to have 
purchased a IBM Clone system". So, let us look at 
that first. "SysTEN" is the key word. If you 
carefully examine the adverisments for IBM systems 
(Clones), you will find that a COLOR system, with 2 
disk drives, with 600K of memory, will cost about 
$1800.00. Then you'll need to add a printer. My OL 
system cost was: $75.00 for the QL, $300.00 for the 
Trump Card, $300.00 for a RGB Monitor, which comes 
to $675.00. This is about the price of a "starter" 
IBM XT Clone with only 256K of memory, no monitor, 
and one 360K drive, It would take another $900.00 
to upgrade the IBM to "aproximate" the capability of 
this QL system. 

Really we are comparing Zebras to horses, The 
QL and the IBM are totally different critters, In 
my way of thinking a IBM system locks one into a 
"closed system", while the QL provides versatility. 
The Trump Card gives 896K of RAM memory, where the 
IBN is not that expandable. Even more ROM memory: 


can be tagged on in cartridges. Much is said about 
the need to be "IBM Compatable". For what reason? 
Why try to be compatable with an INFERIOR system, 
and when such compatability reduces one to a lesser 
level of capability? The QL has more capability 
than the IBM XT. We just need to learn to tap that 
capability. I£ we need to compare the QL witha 
computer of similiar capabilities, the computer 
would be the Northgate 386, a 32 bit CPU powerhouse, 
as is the QL. 


The price tag of the QL reveals a fact that 
needs to be understood by all. The computer was not 
ready for marketing. Because of that, the reviews 
of the Qi were all bad- very bad- CRUEL~ and 
Killing! While designed to sell for around $600.00 
“for the basic machine, reviews killed it and its 
price plummeted to $75.00. Now the few remaining 
Qs in Stock are priced higher, and soon none will 
be available. An estimated 8000 OL computers were 
sold in the USA and Canada. So, we QL owners are 
rather few in numbers on this side of the Atlantic. 
However, the QL is a popular computer in the UK and 
supporting hardware and software are plentiful. 
Because of the low price and the known end to OL 
production, many American buyers bought a spare QL. 
T would advise any who did not to do so quickly. 

The QL, as it is purchased, has quality control 
deficiencies that need to be (must be) corrected. 
The easiest path to take is to send the OL to Tom 
Bent, 9015 Flicker Place, Columbia, MD 21045. Tom 
does a series of fixes that corrects the problens. 
I will go through these. 1. The QL Power regulator 
needs to be £ixed. As purchased it creates too much 
heat which causes crashes after a hour or so of 
operation, 2. Some CPU chips overheat and need to 
be evaluated, replaced if necessary. 3. The 
existing two ROM chips are high power consumers and 
need to be replaced with one EPROM which runs cooler 
and also corrects some ROM bugs. The new EPROM also 
contains. several very worth while additions to the 
QL operating system which are normally sold in (add 
on) ROM cartridges. 


4, The IC that provides Television monitoring 
is removed (optional). This reduces both internal 
noise and relieves the load on the power regulator, 
but eliminates the capability of using a TV for 
monitoring. 5. The "Spider board" needs 
re-soldering. | As purchased, the spider board has 
loose connections that cause crashes. 6. A lube job 
is needed! Tom uses WD-40 to free up the keyboard 
keys and make them operate smoothly. 7. The RGB 
output needs Buffering. All of these fixes are 
needed. You can either have them done or do them 
yourself. But for the QL to operate successfully, 
these fixes are necessary. Quantum Levels magazine 
has devoted quite a bit of space to describing these 
problems. 


To accomplish all of the above fixes, Tom 
charges about $65.00. This is really a bargain, 
especially if you consider that the addtions to the 
ROM, if bought in a Rom cartridge costs that much. 
Ton Bent is the Editor of Quantum Levels and one of 
the best authorities on the QL. I highly recommend 
that every @L owner subscribe to Quantum Levels, 
which is the only North American publication 
exclusively devoted to the OL users. Quantum Levels 
started only about two years ago and I advise 
getting all back issues. A new QL magazine has been 
announced. "QL USA" has not yet published its first 
issue. I£ interested, write to: Bill Fischer, 419 

senuloions De. E., Orange Park, FL 32073 (editor 


publister). 


So, now you know why one could buy a QL for as 
little as $75.00, which is far less than the total 
cost of the IC chips contained in the computer. The 
QL simply was not ready to be marketed and Sir Clive 
payed the price for not fixing all of the bugs 
before going into production. Then the deficiencies 
in production line quality control was the final 
thing that did him in, One can look at it this way. 
We buy the computer in two stages. The first stage 
is buying the QL for $75 ~ $100. ‘The second stage 
is getting its bugs fixed for about $65.00. Then we 
can go about assembling a SYSTEM, including the 
monitor, the printer, memory expansion, and disk 
system, This is a new concept for buying things and 
is kinda hard to get accustomed to. 


Presently there are two devices that provide 


“—“poth Memory upgrade to 896K RAM, additional ROM, and 


a Disk Drive controller. One is the TRUMP CARD and 
the other is the SANDY BOARD. Both contain extra 
ROM that provides a plethora of additional Super 
Basic functions. AND, both are quite expensive, 
around $300.00. One can delay such upgrades and 
still have a QL system that is quite capable, more 
capable and more powerful than a un-expanded IBM xT. 
The four Pison Softwares, which comes with the QL, 
are excellent and they represent a combined value of 
at least $300.00 when compared with any software 
group offered for the IBM. These three softwares 
work well with a un-expanded QL. Some users may not 
ever need more software capbility. 


The two Micro Drives are the legacies of Sir 
Clive Sinclair who spent a decade perfecting the 
highest speed low cost tape deck in the World today. 
While I prefer using Disk Drives, the two micro 
drives do add to the QL's capabilities. 

I have already found that the two micro drives 
provide excellent and reliable mass storage. 
Operation is faster than disk drive with the 
Commodore, but slower than disk drive with the 
TS-2068. Never the less, micro drive lets one wait 
until one’s budget is ready for the expense of 
up-grading to Trump anda disk drive system. Even 
then there is a means available to upgrade in 


stages. The Trump card provides the huge memory 
expansion, plus a great increase in Super Basic 
functions, plus a disk drive controller, plus RAM 


DISK. The addition of disk drive can be delayed as 
the final stage of upgrade. RAM DISK with Trump 
Card lets one operate “as if there were a disk 
drive", then save the data or program to micro drive 
when finished. 


Since most QL users have a spare QL 
(insurance), why let the spare lay around collecting 
dust? Tt can be "networked" with the main QL by 
simple means of connecting a single conductor wire 
between computers. The distance limit between 
computers has not yet been found, but would 
certainly be as far as from one corner of the house 
to another. Since "networking" is an exclusive 
capability of the QL you wont find much published 
information about the principle. This capability is 
usually the domain of very expensive "main frame” 
computers, Briefly, the "networked" computers use 
their own memory for operation, plus that of the 
HOST computer, and can operate any peripheal that is 
attached to either. For example, my son can be in 
his room doing a college report. When finished, he 
sends the data to be printed with the printer that 
is connected to the main QL computer. During the 


process, the micro drives and disk drives that are 
Connected to either computer can be used for both 
programs and data saves and loads, This is kinda 
mind boggling to me, but I'm inquisitive enough to 
"ery" to take it to the limit. 


The Printer: There are some very good bargains 
in printers now a days, especially SERIAL printers. 
Serial printers comnect directly to the serial I/O 
ports (2) of the QL. Most of us are not familiar 
with the computer syntax to print with serial 
printers. My first week of QL ownership was devoted 
to figuring out how to use a printer. This does it 
with a serial printer connected to Serial Port #2: 
<10 OPEN #4,ser2c> <20 BAUD 9600> <30 PRINT #4,"This 
is a Serial Printer"> <40 PRINT #4> <50 LIST #4> <60 
CLOSE #4>. Missing in QL Basic are our familiar 
LPRINT and LLIST. Instead we must OPEN a channel to 
the printér and then use PRINT or LIST, To use a 
Parallel Centronics printer one needs to purchase a 
Parallel Interface. 


A suggestion (as I am doing): To make myself 
learn the QL and QUILL, I am beginning to do all 
correspondance with the QL and QUILL, and my more 
serious data processing and publishing with the 
TS-2068. Later the priority may be reversed. How 
about “maintainability" of the QL? Well, we all 
have some experience with that subject, dont we? 
Already we have two sources for repairs, Tom Bent 
and Dan Elliott. And, if you think that IBM Clones 
are repaired everywhere, you are a good prospective 
customer for the salesman of snake oil, hair growing 
lotion, and astrology predictions. Even the giant 
Tandy Corp. does not have full repair capability for 
their IBM Clones. One does not buy maintainability 
when one buys a IBM Clone. 


So, belay your fears! The Q@ is a gocd 
computer, better than any other that one can buy for 
less than about $2000.00. It can be fixed when it 
breaks. Tt is expandable in stages. It will take 
us at least a year of study and usage to learn what 
the QL can do for us, and it will serve us well for 
many years. Now the QL user Group becomes another 
select’ group of independant thinkers, as unique as 
we TS-2068 users. Both refuse to ride the main 
stream of mediocrity. And neither accepts the idea 
that a popular Name Brand necessarily means the 
best. Both groups look to learning as a challenge 
and help each other to that end. Both groups will 
survive will take it to the limit! 


UP-DATE invites more qualified users to help 
out in coverage of the QOL- to help us novices to 
learn this fine computer. The disparaging comments 
about the OL and its bugs in this article will stand 
as the only group of negativisms as UP-DATE launches 
into support of "Computing with the Sinclair QL’ 
However "bug reports and the details of their fixes' 
will be covered, along with programming, software 
operation, the availability of products, and the 
whole range of user interest subjects. And, there 
ace plenty of subjects to cover. After studying the 
QL manual, the Trump Card manual, and the Speed 
Screen manual, I have hundreds of questions that 
need answers. The QL is a BIG and highly 
diversified computer. I would compare the learning 
task with that of a stranger to San Francisco who 
tas just been hired as a taxi driver. Fortuntely 
for us, we can learn a segment of Functions at a 
time and continue to progress through the learning 
curve. It should be a lot of fun and also 
productive. 


16 


FDD™ EXPress= 


‘MORE LETTERS 
7/88 


Thought I would mention a few sore letters I have received. 


Dear Ron, 

This is a cry for help! I’@ coapleting the FDD Technical 
Manual. So far I've expanded the manual froa 33 to 7@ pages. but 
I don't even own a system. (i have a borrowed one.) [ have 
descriptions and schematics of the 1S2068 Bus Adaptor, FOD 
Interface, FDD 3860 Controjier, FDD Drive, and Asdisk drives. 
Also I've a good start on disassembling the TOS BASIC extension 
software. Where 1 need help is a5 follows: How aany versions of 
the FDD systea are there (ay borrowed systes is silver boxes)? 
Does anyone know the three PAL logic? Has anyone done a 
disassembly? What else da 1 need to know that I don’t know? 1 

_will wake all this information available to anyone doing repairs 
or writing aachine code needing access to the internal code. It 
should be possible to get all parts except for the pc boards and 
cases. The T0S is in Eproe so this can be corrected and 
expanded. One more thing. I need a FDD Controller (silver box or 
3008). 1 have enough other parts to build a system, The 
controlier would not have to be operating if it is repairable. 
Can I get the back issues of 1.0.P.S, - 1 guess they are all 
back issues, Thank you for the FDD Express. Sincerely, Bob 
Orrfelt, 3436 Bay Road, Redwood City, CA 94863 

Bob, as far as 1 know, there are just very slight 

differences between the silver boxes and the 3000 system, 1 say 

slight, because in doing some work with Mike Finn's Track Reader 
progran’s, I found a slight differance. Nothing to get emotional 
about. { will be explaining more in a future issue. There Kas 
only one issue of T.0.P.S., and 1 con't have sare than just my 
ona copy, which has notes all over it. Maybe somebody else cut 


there has a copy they can send you. Ron 
Jack Dohany wrote ae a nice, informative letter a (long) 

while ago. 

Hi Ron, 


Thanks very auch for sending se your newsletter. i like it, 
and want to remain on your List, even though I don’t own a Zebra 
system right now...To provide fullest possible support, { need 
to have ALL disc systems at ay elbow. The only one i now iack is 
Tebra, so I’m looking for a very ‘inexpensive lebra systen, 
working or not, cld-type or (preferably) FD 3002...In order to 
stay alive this year, I need to expand ay mailing list, and get 
ay software know to as many people as possible. So please ask 
your subscribers to send ne their address so I can send them a 
catalog. Preferably they should enclose $1 + SASE to help out... 
Sonething you or other Zebra users may be able ta help me with: 
T have never seen an FDD 3400 or had access to one. I need to 
know how it differs from the original “aany-little-box" Zebra 
system. If someone could undertake to sake ee a copy of the FDD 
3004 docurentation and aail it to ae, 1'¢ be happy...But a 
short, complete and correct syaopsis of differences between old 
an¢ new might be just as useful, since 1 already have 
docunentation for old systems...Does anyone out there have a TOS 
source listing?..An expert prograamer, with access to this 
listing, would be able to answer just abou any question or solve 
just about any probles. For example: how to get Mscript to talk 
to a serial printer over Zebra RS2322..Jack Dohany, 390 
Rutherford Ave., Redwood City, CA 94661 


17 


UPDATE July 1988 
articles & Reviews 


Everyone is on notice to help Jack out any way possible. 


Dear Ron, 

T bought one of Zebra’s early single drive systeas (with 
it’s probless) and later added the second drive. i am rather 
happy with ay systee now. I would be interested in knowing if 
anyone has done much with pragrassing for the Agdek DX¥-100 
Plotter, which is addressed by Iprint conwands, I would also 
lile to know if anyone has roduced a progras to wake use of the 
2808 sound capability. Dennis Bryant, 16148 Foliage Ave., 
Rosemount, HN S5H68 


Anybody who can answer this would be appreciated. 


Dear Ron, 
i don't reseaber if I read it in your newsletter or when 


“talking to Gwen Christianson but T'd Tike to transfer ay one ~~ 


2068 progran Profile 2068 to disk. Your series covered Tasword 


but I don’t even have that wordpracessor program, so if that is 
coaing up I'll b# looking forward to that. Tom Dunlop 
Look no farther, Toa, this 15 it. Actually, not even 


Jooking at the program fros way back when I transfered it, 1 can 
tell you that Tom Woods made tranfering the program INCREDIBLY 
easy! Hopefully you have the full sanual, because all the 
inforration you need is right there. First, let’s just MERGE the 
loader program, Now change the lines that LOAD the code and 
progras to LAD %, aking sure to seep the nases slightly 
different. 1¥ I reneaber correctly, both the code and the BASIC 
had the same nase, which on tape wouldn't matter. So just rename 
the code "p/f" and the program "profile.bas". Now SAVE # 
"profile" LINE i. That takes care of the loader. Now reload the 
original loader from tape, and in fact go through the entire 
loading process. Once you get the prompt to Create or Load a 
file, press CAPS SHIFT-EDIT, which «ill get rid of the quotes, 
and then STOP. Now SAVE #"p/f* CODE 63486,204%. Now LIST the 
Profile program you have in your coaputer. If you see only a 
blank screen, then just change the INK color to white: INK 7. 
Change the necessary part of iine 107 to SAVE + f$ LINE in, Be 
sure to use the trailing “n", so that the program will overwrite 
the existing file on disk (if you mant to do that). Change the 
part of line 5510 to LOAD # #4, Now SAVE *"profile.bas* LINE 
9996. And you should have Profile on disk. There are sose 
igproverents that can be done. For example, I included a small 
section after the "L* or *C" prompt todo a CAT *# if I choose 
“L*. That way, I-can see just what files I have ta load, 1 also 
set up ay version to automatically add the *.fi1" extension te a 
nage I saved, and to add that extension to any filenase I wanied 
to ioad, soi don t have to add that when i want to load 
sorething. You can do that kind of stuff your ow way. All the 
ather additions where just as discribed in Toes manual, 
full-size printer addition, auto search isproveaents, etc. 1 do 
have a saali "start" progran on the disk to auto-load the 
"profile", but you can just rename the “profile” loader progras 
to ‘start®. 


Qn to other things. First off, I have recently gone through 
all the letters 1 have received from you, (I keep a complete 
archive, no “file 13") and find that there are many questions 1 
have not answered, or perhaps answered in a somewhat 
disorganized aanner. And in fact, I kind of got confused as 1 
read through as to what I had and had not related to in the 


newsletter. Alsa, I have been informed by some people that ay 
explainations of different itess left a lot to be desired, 
sonetiees more confusing than helpful. So I want to ask you to 
do ee a favor. Anyone wha had a topic they wanted answered, or 
that wasn't answered completely and understandably, please 
rewrite ee with the request, and I will try to get it in as soon 
as possible. Please forgive ge for the unprofessional @anner in 
which I have handled the newsletter, but I said at the beginning 
I had never done anything like this before. 


Just to let you know something I am working ont I have 
eveloped the idea of making an “archive” program, and in fact I 
have started with 1t. What it (hopefully) will be, is @ program 
that reads the directory track of a disk, (Thanks to Mike Finn's 
TRACK READER program) and then is able to load up all the 
programs, code, arrays, on disk and place thea on a cassette 
tape. There area couple of ways this Can be accosplished. “One, 
by using Mike's program to read each track of a disk, encoding 
it, and placing it directly to tape. This wouid be faster, but a 
sajor drawback would be that the prograss on the tape would not 
be able to be used from tape. | choose ta get each file one af a 
tise, and place thes on tape so that they can be used fron tape 
if necessary. Imagine Naving your drives go down, and not being 
able to access an important program. 


Yes, you could load and save to tape each program, code, 
etc. manually, but how often does anyone do that? I have had ay 
drives for, golly has it been elsost three years already? And 1 
have NEVER saved any of the files to tape, even though most of 
the programs have been created since I had the drives. So if ay 
drives go down, I am up the creek without a paddle. And 1 am too 
lazy to sit here for the hours it would take to individually 
load and save each and every program. So if I can write a 
program to automatically do that, even if 1t can only do one 
disk at a tine, then so auch the better. 


Nos, sone problems with it. One, I am writing it in Basic, 
since ay knowledge of asseably leaves a lot ta be desired. Oh, 1 
can read asseably alright, but writing’is 4 different waiter, So 
with this in Basic, that aeans that 1 am using variables, hich 
nay conflict with variables in the erograns I am trying to save. 
5a some ruies 1 will have to follow are: Use variables that 1 
NEVER!) use in programs. And surprisingly, there are quite a 
few, even with the string variables. Ever notice how we tend to 
use just certain variables in all our prograas? For exampie, i 
simost always start with a8, then Bf, then Cs, etc. Then 1 skip 
to 1, V8, and sonetines 15. I NEVER use US, VS, and WS. See if 
you dont tand to follow something like that as well. 


Since the prograa is written in Basic, that nears that a 
ERGE + will werge the progras on dist with this one. So I have 
to nake sure that all the Line numbers are such that they don’t 
interfere with the serging pragrams, and are not intertwined 
sith them, Also, since the entire program, aiong with this 
pecial progras, will be saved to tape, it is important to wake 
sure that this routine 1s aot executed when the serged program 
tg run, 


Another major consideration is the amount of aemory the 
cogran and variable take up. Though I an trying to make it as 
aall as possible, still it will take up soe roca. So a progran 


on disk that takes full wesory wili not be able to be serged.7 g decided I would need sore expandability that it would al 


Profile is one of those that would not be able to be backed up 


UPDATE July 1988 


Articles & Reviews 
in this sanner. 


Obviously, sachine language is the answer to east of this. 
When I get it finished, I will publish it and let those assembly 
progransers of you out there translate it to aachine code, Then, 
you aay be able to locate it in some innocuous space in sesory 
so everything can be loaded in and saved. 


Giso, I haven‘t figured out how to load and save to tape 
those sequential and randos access files. They could be auch 
larger than semory (which is why they are so valuable) and the 
routine to convert them to code would take up room 1 don { want 
to use. i a going on the assumption that those Find of files 
would need continual update anyway, and so a backup would be too 


cid to bother with. 


As you have-probably noticed, T-am-using-Tasword- again to 
write this, even though you know I have Mscript. Well, the truth 
is, 1 have tried it a few times, used if for the last 
newsletter, but don’t care for it all that well. My preferences 
are Tasword first, Wordstar (CP/M) a close second, and Mscript a 
distant third. Just no accounting for taste 1 suppose. [ just 
prefer the “wiat you see is what you get" type of display, #hich 
both Tasword and Wordstar offer. Yes, 1 can set the screen of 
Mscript to the width I am printing, but I prefer on screen 
formatting, which Mscript can’t do. Also, I don‘t like ail that 
extra on screen jumble interfering with my reading. 1 will 
continue to use it and get used to it, but that doesn’t mean 1 
have to like it. I nave to Iearn it inside out though, sol can 
try to figure out how to send the output through the serial port 
of the grives. 


Now let @e tell you the greatest(?) news. i have finished 
that Accounting software 1 was writing for ay boss, and have 
been paid. So i fave ordered an kT clone. Haven't received it 
yet, only ordered it two days ago. But now I will te able to be 
compatible with sore business people in ay area. A client ot 
a@ine has an Aestrad, based on ay recommendation, but I have been 
unable to get soae of his software installed, since he has the 
computer in nis howe, and his schedule and aine conflict so auch 
that I can't get there. So the answer is for me to have a 
compatible machine here, instail the sottware properly on disk, 
and then give the disks to hia. 


So now the first thing that cones ta your mind is, “Ohy no, 
is Ron going to abandon us toa’. NEVER!!!! 1 feel too auch 
loyalty to ay fellow leura users, and in fact, will need to keer 
using ey Timex system for sone time to come. One of the first 
things 1 have to da is to try to transter the PC telecom program 
FROCOMM from ay CP/M disk to the x7. 1 downloaded it to fy 
system so that I can hopefully da a direct transier serial port 
to serial part, and thus get it to the clone, without having te 
buy a telecoe program for it. (I'm incredibly cheap) if i 
accomplish this, you will be the first to know how. Why? Soae of 
you do not have modess for your CP/#, but would like more CP 
prograas. Everyone knows somebody wio hes a FC type coaputer. 
Let hia download a program tar you, and transfer if tc your 
aachine. 


No, I did not get an Anstrad. I was (and still aa) quite 
enthused about it, especially the 1640, but at the last @inute 
low. 


Just hope I haven't eade a sistake. Ron 


UPDATE July 1988 
Extra Memory 


TS-2068 with ** UNLIMITED RAM capability 


The plug in cards to the left are expansion banks. The tall card 
behind the 2068 is the controller card. Interconnect is via 2 40 wire 
ribbon cables. 


wee EXTRA MEMORY *** 
(editor's note) 


I wrote to Mr. Charles G. Bothner because I had heard of his work 
in the TS-2068 Extra Memory area. His response flabbergasted me. This 
is the most complete engineering analysis of 2068 Extra Memory that has 
been produced to date. It goes far beyond the expertise of the Timex 
engineers and corrects their mistakes. While interesting to read, most 
will be swamped by the technical detail. The real reason for publishing 
Mr. Bothner's extensive thesis is to provide the information to our own 
hardware developers who are still producing products for the 2068. Tt 
can save 2 years of duplicate work and cut the time needed to bring us 
products to use. Mr. Bothner, we appreciate your gigantic contribution 
and we applaud your expertise! You are really dedicated to our slogan, 
"take it to the limit!” 


a 
\o 


UPDATE July 1988 
Extra Memory 


May to, 19868 
Bill Jones 
$-2068 UP~DATE 
1317 Stratford Avenue 
Panama City, Fl 32404 


Dear Bill, 


You are right about me having operating hardware for TS-2069 
expansion bank operation. I have spent the major portion of 
the past two years in debugging the Timex ROM software and 
constructing some hardware for expansion banks. 


Let me fill you in on my present status of development. At 
the present time, I have completed debugging of the home 
PROM and verified operation of all modified routines with 
diagnostic software. The routines include the FORMAT, MOVE, 
CAT, and ERASE functions as well as the LOAD *, SAVE *, 
VERIFY *, and MERGE * functions. —One of the Timex routines 
required for communication with the expansion banks is the 
PASSING routine which is located in the EXROM. The original 
Timex implementation of this routine (which saves parameters 
on the machine stack) required that memory chunk © be 
enabled in the EXROM bank simultaneously with chunk 1 being 
enabled in the HOME bank. Apparently the SCLD chip does not 
allow this to occur since I could never get this routine to 
work properly in the EXROM. After moving the PASSING routine 
into the HOME PROM, it worked perfectly. 


I realize that this letter is somewhat rambling, but I 
wanted to give you some idea of the types of problems that I 
encountered during the development program. You may be 
wondering by now where I found room to cram any more func— 
tions into the HOME PROM. There was a great deal of redun- 
dant code in the original ROM, and several small routines 
which were never used. Also, I deleted the original PRINT 
and COPY routine area which dealt with the 2040 printer 
only. Another significant change to the the HOME PROM was 
the modification of the calls to the routines located in 
home RAM. Originally they only communicated with the RAM 
routines when they were in chunk 3. I included routines to 
determine whether the RAM routines are currently in chunk 3 
or chunk 7. The calls to these routines were originally used 
by only the DOCK bank communication routines, but now they 
are also used by the expansion bank communication routines 


The present hardware status allows communications to up to 
15 expansion banks via a controller interface card attached 
to the bus connecter. Each expansion bank is on a separate 
plug-in card on a separate chassis assembly. I only have a 
total of S expansion banks on-line at the present time be- 
cause I have not had time to wire up any more cards. 


During the course of the development, I found it necessary 
to do major re-writes of about half of the 0.S. RAM 
routines. I completely scrapped the original routines which 
did the actual setup communications with the expansion banks 
(B.S. READ and B.S. WRITE). The use of ports FC and FD as 
originally mentioned in the Timex Technical Manual seemed to 
make more sense so I went that route in the new hardware. 


At the present time, 1 do not have the expansion bank in- 
itialization routines in the EXROM completely debugged. When 
1 boot up the system, I load the SYSCON table and the MAXBNK 
values via a separate program which is loaded from tape. 


You asked about some data on extra memory. Probably the 
simplest add-on is the full expansion of the EXROM bank. it 
is necessary to add a small circuit card containing two 
I.C.’s to the internal circuit of the computer to provide 
full address decoding to the EXROM PROM to allow chunks 1 
through 7 in that bank to be used for either RAM or addi- 
tional PROM routines. As you can see on the schematic, only 
one of the chips is used for the EXROM decoding. The other 2.0 


chip allows de-selection or disabling of both the EXRUM and 
DOCK banks when the line marked BUSISO is in a low state. 
This line is an unused function on the original computer, 
but it is the key element in the functioning of the bank ex— 
pansion hardware. 

Let me explain the bank expansion hardware operation a 
little further at this point. As you are aware, the activa 
tion of chunks of memory in either the EXROM or DOCK banks 
is accomplished by setting corresponding bits high in port 
F4, The identity of the bank using these chunks is estab- 
lished by the state of bit 7 of port FF (G=DOCK, 1=EXROM). 
The use of the BE signal by expansion banks would cause 
disabling of ALL HOME, DOCK, and EXROM memory so the expan- 
sion bank would not have direct access to the system vari- 
ables or the RAM which is accessed by the SCLD for display 
refresh. In my implementation of the bank switching 
hardware, the bits of port F4 are still used to determine 
bank usage. A 0 in any bit position still signifies that the 
HOME bank has control of that chunk and a1 signifies that 
either an expansion bank or EXROM/DOCK banks (depending on 
the state of bit 7 af port FF) have control of that chunk 
if —an—expansion bank has been assigned thé chunk, it will 
pull the BUSISO line low whenever addresses in that chunk 
are active, thereby disabling both the EXROM and the DOCK 
banks at that time. (The GET STATUS routine in RAM has been 
modified to properly identify which chunks are assigned to 
which banks by subtracting all expansion bank chunks from 
the port F4 mask and identifying all remaining non-HOME 
chunks as either DOCK or EXROM) 


I am including the schematic for a full expansion of the EX- 
ROM bank via a circuit card which plugs in to the expansion 
bus connector. Note that the BUSISO line as well as the BE 
line can disable this memory when required. 


T sent an article on port expansion hardware to TDM over a 
year ago, but I guess that they were not interested so I am 
including a copy in case you might want te do something with 
it. Since that article was written, I have added a number of 
other ports to the system including the Larry Kenney disk 
system, a 16 bit parallel I/O port, a Digitalker port, and a 
20 milliamp loop interface pert. The phatograph shows that 
the outrigger hardware swamps the original computer in sheer 
volume. 


I really don’t know where to start in writing any articles 
on my memory expansion proect. Over 1000 bytes have been re- 
written in the HOME PROM alone and you can see from the ex 
pansion bank schematics that they will take a great deal of 
explaining to make the overall operation clear to your 
readers. If you are interested, I can send you copies of the 
modified PROM’s so you can try out any of the hardware you 
may care to build. I am not personally interested in market- 
ing anything but will freely make information available if 
we can figure out a rational way to present it. 


Please feel free to give me any advice or comments relative 
ta generating articles. I am a hardware engineer, not a 
writer. 


sincerely, 


Charles &. (Chuck) Bothner 


F.S. In regard to extra memory, there are over 1000 bytes of 
RAM going to waste on the normal 2048 computers. Most peaple 
are familiar with the 256 bytes available in the 2040 prin~ 
ter buffer area starting at address 23296 (SHOOH), but I 
have never seen any mention of the 542 bytes available in 
the System Variables area starting at 23754 (SCCCH) or the 
265 bytes available in the Syscon Table area starting at 
24311 (SEF7H). My system boots up with a modified version of 
the AERCO printer handler and a COPY routine for an Qlivetti 
model PR2300 printer being loaded into the spere RAM in the 
System Variables area. (The expansion banks are rapidly 
filling up the Syscon Table area.) 


21 


UPDATE July 1988 
Extra Memory 


2068 PORT EXPANSION 


Page 215 of the Timex/Sinclair 2068 User Manual contains 

a statement that up to 2 peripherals can be simultaneously 
connected to the expansion connector. If you are like me, 
you have acquired a number of different peripherals over 
the last few years, such as a full size printer interface, 
real time clock, telephone modem, graphics interface, RS- 
232 interfaces, etc. It becomes somewhat of a nuisance to 
keep reconfiguring the units connected to the rear expansion 
port, as well as producing unnecessary wear and tear on the 
connectors. 


There are two primary reasons for the 2 expansion unit lim- 
itation. The first one is the 2068 power supply limitation 
of 1 ampere maximum on the +5 volt power bus. The second 
reason is the lack of buffering on most of the output sig- 
-nals on the expansion bus. 


With ‘this in-mind, I designed-and-built..a.port expansion __ 
buffer unit. The schematic for this unit is shown on Figure 
1, The power limitation was corrected by providing an ex- 
ternal power supply which provides +5 volts @5 amps., and 
a+ &-15 volt supply @500 milliamperes. This powers all 
port add-ons beyond the buffer card. 


An examination of Table 2.4.1-2 in the 2068 Technical Manual 
will show the acceptable loading that can be applied to each 
of the output signels on the expansion connector. This table 
however, like the system ROM's, contains a number of errors. 
The following table contains some corrections which can be 
readily verified through an analysis of the 2068 schematic: 


FUNCTION IMEX MAX, LOAD(I) REALISTIC LOAD(Z) 
ALSB 1.8 mA. 12 mA. 
A1uB 1.8 mA. 12 mA. 
A13B 1.8 mA. 12 mA. 

ATRB 0.35 mA. 6 mA. 
EXROM 12 mA. 1.8 mA. 
ROSCS 12 mA. 1.8 mA. 


These corrections were noted during the design of the port 
expansion card and are listed here only for general infor- 
mation. The functions required for standard port I/O oper- 
ations are IORQ, RD, WR, data bits Df through D7, and the 
lower 8 bits of the_address bus, A® through A7. The control 
pits IORQ, RD, and WR are among those that are already puff- 
ered inside the computer by U15, a 74LS245. The data bits 
and lower address bits are not buffered and have a limited 
drive current capability. Since the address lines are always 
driven by the 280 chip (unless presently unavailable bank 
switching hardware is in use), a simple unidirectional buff- 
er chip can be used for these signals as shown on Figure 1. 
U2 on the buffer card is a 74LS244 which has an output 
current drive capability of more than 20 milliamperes, 

so this will support at least 50 expansion ports af only 

one standard LS chip load is present on each line at each 
port. 


The buffering of the data lines presents more of a problem 
since these lines are bidirectional. The buffering of the 
data lines 1s accomplished by using a 74LS245 chip (U1) 
which also has an output drive capability of more than 20 
milliamperes, The data flow direction is controlled by the 
logic provided by U4. The T4LS245 chip is always operating 
in the data out mode unless a read on the port bus is req- 
uested. this could cause complications when the 280 chip 
requests a read of the ports controlled through the SCLD 
chip, the sound chip, or the T/S 2040 printer. To prevent 
loading of the internal data bus by Ul when a read of the 
SCLD ports is requested, U5 is used to tri-state, or float, 


the 7ULS245 when any of the port addresses FOH through FFH 2.2 


are in use. All of the presently known 2068 internal funct- 
dons are contained within this block of addresses. This 
leaves a total of 240 I/O addresses available for periph- 
eral units. These ports are in the range from #@H through 
EFH, 


Some additional lines were buffered on this card to isolate 
the external ports from the internal 2068 hardware. the 
clock, Mi, and RESET signals are buffered by a 7T4LS367 (U3) 
chip, This chip was used instead of another T4LS244 to save 
some real estate on the card to allow for the addition of 

a real time clock/calendar port on the same card (Figure 2). 
A l0uF capacitor was added to the unbuffered RESET line to 
compensate for the lowered pull up resistance presented by 
the TALS 367 chip (the 2068 internal pull up resistor is 220K 
ohms). 


The port buffer was constructed on a Zebra Systems experimen- 
ters card using their expansion connector units. All of the 
functions not shown on the schematic of Figure 1 were conn- 
ected straight through from the female connector to the male 
__eonnector card. The pins fro nector were not 
t male | oF 3 t= 


connected to ¢. 
dons shown on Figure 1. See Figure 3 for connector mechanical 
details. Independent input and output connections were pro- 
vided as shown on the schematic. The +5 volt and +15 volt 
pins on the female connector were cut off at the connector 
to isolate the computer power from the I/O ports. 

A -15 volt supply was added to allow use of operational 
amplifiers and other analog type chips on A/D and D/A 

ports, The -15 volts was tied to pin 5 on the bottom 

of the connectors. This 1s a previously unused pin on 

the expansion bus. Not shown on the schematic of the 

port buffer card are the usual 0.01 to 0.1 uF capacit- 

ors on the +5 volt supply pin for each chip on the board. 

The external power supply was connected to the puffer card 
through a 5 pin Molex connector, but these lines could 

be hard-wired, if desired. 


As noted before, if you are using a T/S 2040 printer, it 
will be necessary to connect it between the computer and 
the buffer card since it uses port FBH for its communicat— 
ions, 


At the present time I have a total of 8 I/O cards stacked 
behind the 2068 computer (see photos). They contain the 
following functions: 


Card #1- I/O Port buffer and real time elock/calendar 


Card #2- RGB Monitor interface and phoneme entry speech 
synthesizer 


Card #3- Text-to-speech synthesizer with exception word 
EPROM added. 


Card #4- 16 Channel A/D interface and paper tape 
reader interface. 


Card #5- Zebra Systems graphics interface 


card #6- RS-232/ 20mA current loop interface(Zebra 
Systems modified 2050 Modem card) 


Card #7- T/S 2050 MODEM unit 
card #8- AERCO printer interface 


Cards 5 through 8 are commercial units while the first 4 are 
home brew assemblies. A total of 47 port addresses within the 


QOH to EFH range are presently in use with more peripherals 
yet to come. 


This stacking of I/O cards produces a lot of connectorization 

put I have never had any problems with system crashes or other 
problems due to connector wobble as reported for the T/S 1000 23 
computers. 


II of the funct= 


Zebra Systems prototyping board 
4 


Zebra Systems Zebra Systems 
input connector- output connector 


remove this portion 


for buffered signals 


solder these 
\ connections for all 
cut the +5 and +15) non-buffered functions 


volt leads here 


FIGURE 3 


CORE IN LINE 1 REM. OF CLOCK SET PROGRAM 


ADDR. _DATA ____ OPCODE FUNCTION 
685B ENTRY ES PUSH HL Save registers 

685 DS PUSH DE 

685D cs PUSH BC 

4B5E 3EOF LD A,OF PIO set for output 

6860 D3D9 QUT (D9) ,A FIG A port 

6862 DSDB OUT (DB) ,A PIO B port 

6864 3E40 LD A, 40 Clock HOLD command 

6864 D3p8 OUT (DB) ,A Start HOLD on clock 

6868 0E22 LDC, 34 150 uSec. delay for 

686A DELAY OD DEC C HOLD setup 

686B 20FD JRNZ, DELAY 

686D 2iFOSF LD HL, SFFO Addr. for setup data 
4870 16D8 LD D, D8 PIO A port data addr. 
6872 IEDA LD E, DA PIO B port data addr. 
6874 vane LD B, DO Starting clock chip addr. 
6876 78 Lb A, B Clock addr. into A 

6877 LOOP D610 SUB A, 10 Decrement by 16 

6879 AT LD B, A Restore addr. to E 

687A 7E LD A, (HL) Get ASCII data 

6875 C610 ADD A, 10 Convert to BCD + HOLD 
487D 4B Lp c, & * Get PIO B port data addr. 
687E ED41 OUT (C), B Addr. to clock chip 

6a80 40 Lp c, D Get PIO A port data addr. 
6881 ED79 OUT (2), A Output BCD char. + HOLD 
6883 ce10 ADD A, 10 Add write bit 

6885 ED79 OUT (2), A Char. + WRITE + HOLD 
6887 D610 SUE A, 10 Turn off write bit 

68s? —ED79 OuT (2), A Output BCD char. + HOLD 
6888 3 INC HL Next char. addr. 

688C 78 LD A, B Get clock chip addr. 
68aD a7 AND A Set flags 

‘eBeE 20E7 JRNZ, LOOP Continue until done 

4890 —D79 ouT (2), A Release HOLD on clock 
6892 Ci POP BC Restore registers 

6895 Di FOP DE 

6894 Et POP HL 

6895 co RET Done UPDATE July 1988 


24 Extra Memory 


“iy as evs! UPDATE July 1988 


aw me: Extra Memory 


Au bre 
an Dae 
San ose! 
n ay {1 
Lost 
> AT 
i 1 
1 
1 : 
| ‘ 5 
H a 
OAT Aw + 1 Sarr Tonge 
Too ay EB 
1 a 1 ~ 
' v2 he 33° 4 
joa? od} Sins Ye raft pou ATB 
| AG sa) |, may aes 
AS a 
ia ae a UG s 
AD 
Aa an) Eh and Dm as 
At pu >t Fh aun 
NO a>: ceerre=acor raved ee ADE 
f FRom Le are 
f enennany EY SOs : 
power) +ey'eil soz tH 
I ant surrey \ lev? eae 
H td & 1 : 
— mens 
+ Aas TB 
vat RET 8 
1 


eit 


se LOY 
BL Got: 
1587 Gd 
toe Gat: 
AP% God 
|r Ga 
ae 7 = 
T/S 2olR PoRT BUF : 
av Ne. ra) BUFFER : 
; ; i: 7 
aw © tv! G1) 
Rak 7 wK vs Re sue 
mre 12fo: nt ty att 
coe al [= 
: ore hs ne 
mp —Eo a 
PB 1.1445; * mE 
ne msec tS 
pip Lath ea q— + 
8 ES @) 
nf inane 
WIS Jeli map q ti 
. woes SHB HE Ay Tay 
ns ————-S dni’ 328 tv! Bhs aBeetery 
fot SPE yt_ateEhe 
vl cD thse 1] 
ae 7 ae a 
ce 25h ey 27 id = 
ul 7 
Se anal T/s Lowe REAL TIME 
7 CLOCK /CALENDAR PoRT 
ae 7 a PoRT ADPRES SES 
_ PX pata 
y 73 DIPLO A Conner 
ee oe DA PLOB Dats 
bed DB FIO B Gomme = D5 
ic 


UPDATE July 1988 
Extra Memory 


ims aan 
t 
AGRASHE 
tere 
bia ah) 
eB tt 
EEEEEEE 


$79T S/L 
Fe meg WOs Xd tof | 
wevmedig howd 28 


va 


26 


Foner 


td * 


| 46> 


vel cade 


Geaed yer) 
Grany “¥o> Mem 
Nenrwedty sigsdty $102 


UPDATE July 1988 


gsaaaasa 


0 ofé 


W221 


neinetty 44 


ee] OF 
a ate} of 

138 LGipte 
ae] OG 

Ee 
el & 8 

* 

-| & 
as 

ef ane <A 

[eo 

ti] at 
on 

a 

‘i fovea 

. ston 
ae 

‘ 

* * 
wr Carfr-0 

rears rons nt oy 
z tr oft EL 


CODE _IN LINE 1 REM. OF CLOCK READ PROGRAM 


UPDATE July 1988 
Extra Memory 


ADDR DATA OPCODE FUNCTION 
685B ENTRY ES PUSH HL Save registers 

685C DS PUSH DE 

85D cs PUSH BC : 

685E SEOF LD A, OF PIO port B output only 
6860 D3DB QUT (DED, A Set it up 

6862 OED? LDC, D9 PIO port A command reg. 
6864 21AASS LD HL, PIO Configuration table addr. 
6867 0604 LD B, 04 4 byte transfer 

6869 EDES OTIR Set up port A 

6868 3E40 LD A, 40 HOLD bit for clock chip 
686D D3D8 OUT (Da), A Send it 

6B4F OE22 LD Cc, 22 150 uSec. delay routine 
4871 DELAY OD DEC C for HOLD setup 

6872 20FD JRNZ, DELAY 

4874 6620 ADD A, 20 __Add READ bit 
6876 D3pDB OUT (Da), A Send READ + HOLD 

6878 1EDA LD E, DA PIO port B data addr. 
6874 16D8 LD D, DB PIO port @ data addr. 
487C 2IEFSE LD HL, SFEF First data store addr.-1 
687F 0600 LD B, Co First clock chip addr. 
6881 LOOP CDAESS CALL STORE Store data 

6884 FS FUSH AF Store character 

6885 78 LD A, B Get current clock addr. 
6886 D610 SUB A, 10 Decrement it 

4a8@ 47 LD B, A Put back into B 

6889 FE7O cr A, 70 Is it 1's day adde.? 
688B 2808 JRZ, MASK Jump if so 

6seD FE4O CF A, 40 Is it 1's hours addr.? 
688F 2807 JRZ, MASK Jump if so 

6891 FEFO CP A, FO Is it done yet ? 

6893 2808 JRZ, END If so, wrap it up 

6895 FL POP AF Get ASCII data back 

6896 18E9 JR, LOOP Continue until done 

6898 MASK Fi FOP AF Get ASCII data back 

6899 ESF AND A, FX Mask off AM/PM,24 hr,29 day 
6898 1864 JR, LOOP Continue until done 

689D END FL FOF AF Get ASCII data back 

689E 0600 LD B, 00 Units seconds address 
68A0 CDAE68 CALL STORE Store last data char. 
68A5 AF XOR A Clear A 

68A4 D3D8 QUT (Da), A Clear READ & HOLD 

68A6 C1 POP BC Restore registers 

6887 Di FOP DE 

6848 Et POP HL 

809 ce RET Done 

684A PIO CF Select mode 3 on PIO chip 
68AB OF Select 1/0 bits 

68AC 37 Interrupt control byte 
8AD FO Mask byte 

S8AE STORE 77 LD (HL), A Store ASCII character 
68AF + 23 INC HL Next addr. 

S8B0 4B LDC, E Get FIO port B data addr. 
68B1 ED41 OUT (C), B Clock chip addr. in B 
6883 4A Lp Cc, D Get PIO port A data addr. 
48B4 900000 NOP ‘s Wait for clock addr. delay 
6887 ED78 IN A, (C) Get clock chip data 

6889 E6OF AND A, OF Mask off bits 4-7 

4885 [orate) ADD A, 30 Convert to ASCII 

68ED ce RET Back to main routine 


29 


(BL) 


iy io) 20 


KRom 


Note} FV wire = R 
Quel wire = BLK 


eatee e 4 Cut original cireurt traces tes 
pin 20 of XROM socket 
pin 35 of U4 Cartridge mcket) 
—BUSISO Ine is vied te disnble XROM/DOCK backs 
When an expension bank 1s active, 


UPDATE July 1988 
Extra Memory 


30 Rev, £ | 


Re PO Ts Lobe Modi Ficetiens to [| 
Boe Provicle Prapre Aeldvers Decorting fer xReM Peer | 
[Ro, oF sheers ren ser) | 


to allow full vie o€ XROM bank aolelresses 


PRINTED IN U.S.A. 


< 
a 


"LARKEN DISK DOCTOR" 


By George Chambers 


This utility will be found useful in the inspection, 
analysts, and correction of errors on disks used on 
the LARKEN DD system, This utility 1s destgned for use 
with the Larken 360K per disk I/F board. 


Entering the I1sting 1s straight-forward, however 
there are a couple of things which will not be evident 
from the listing. 

Firstly, there are a number of buried color codes in 
the program which contribute to it's ease of use. 


A buried color code is entered into a listing by 
going into the "extended" mode, then pressing one of 
the keys 0 to 7 (the color keys). This has the effect 


—of-imnedtately changing the listing color. This-effect —-- 


also appears in program operation, which is why we are 
doing it. This new PAPER color will continue through 
the listing and the program, so it 1s necessary to 
make a change back to the normal PAPER color 
jmmediately after the effect is no longer wanted. 0o 
this by entering a new color using the same routine. 
Usually this will be the “extended mode" key 7, to 
give a PAPER NHITE effect, If this command has been 
inadvertently entered incorrectly it can be deleted 
using the DELETE key in the normal manner except that 
you will find that two operations of the DELETE key 
are required, 


Lines which require this color switch are as follows: 
CH Tale” o 
i ve 5 
"RENOVE PROTECT TAB: 
cams “while using Rename” 
"2520 yellow: "ready?" 
" 4060 green: “initial letter of each command” 


we 


jnitial letter of each command 
letters Q and A 
" 4640 yellow: initial letters of "Same" & "New" 
"7601 Red: Remove WRITE PROTECT sticker" 
You may also choose to highlight the REM statements. 
(Don't forget to insert the"extended" mode 7 after 
each of these entries) 
Save the program by GO TO 110. Or to make it an 
AUTOSTART program hy changing the line to read: 
110 RANDOMIZE USR 102 
The program makes use of the LARKEN “Hcode.C1" disk 
00S routine, so it must be on the same program disk. 
The program has been written to allow compilation by 
TIMEHACHINE, Lines 120 and 2535 would need to be 
removed however, due to the inability of TIMEMACHINE 
to handle untquely LARKEN comands. 


"4140 yellow: 
4320 yellow: 
"4350 yellow: 


OPERATION: 
Upon running the program you will be presented with 


a menu offering 8 choices. 

Option 1, will give a screen display of the USED/ 
IDLE status of all the tracks on the disk under 
scrutiny. As written ft will handle OSDD disks 
correctly. 


31 


UPDATE July 1988 
Programming 


option 2, 1s a Program Header Reader, which gives a 
track by track report of programs on the disk, 
Option 3, provides track Information about each 
program on the disk taken from the directory track. 
Option 4 provides the capability of examining and 
modifying the data on a track, Most useful when used 
on track 0; the directory track. 

Option 5. Offers a program rename capability. 
Option 6. A Disk Formatting routine. 

Option 7, To select a particular drive. 

Option 8. To quit this program, Calls up a Menu.él 
program, Can be modified to suit needs. 


The use of option 4 requires more explanation. It's 
biggest-use-wi1¥-be-on-track-0-as-menttoned-earHers — 
When Option 4 is called up you will be asked for a 
track number, Most often wanted will be track 0, the 
track whic holds the disk directory. Enter a 0, The 
program then proceeds to load the contents of that 
track into a buffer area in the computer starting at 
address 45000, It is at this point that we can access 
the buffer, inspect it, make changes to it, and resave 
it, with or without changes as desired. 

First we will briefly cover the makeup of track 0. 
The first 168 bytes of this track are concerned with 
disk status. After that comes a series of "cells" 
containing a record of one of the programs that has 
been saved on the disk. Each cell contains the program 
name and the track numbers that the program occupies, 
plus 3 or 4 markers used by the DUS to mark the 
program location. Each cel] occupies 34 bytes. There 
is room for as many as 100 such cells on this track 
(though rarely are that many used). Towards the end of 
the track is the disk name. 


This is the briefest of outlines of the track 
makeup; sufficient only to permit an explaination of 
the use of the commands shown in option 4. 

When Option 4 has been selected and track 0 chosen 
you will be presented with a display of the contents 
of that track starting with byte 0, This fs not 
particularly interesting at the moment so press the C 
(continue) key, This will advance you to the first 
program name cell, The screen shows the first 17 bytes 
of this cell. Pressing C again will display the next 
17 bytes of the cell. Pressing C key a third time will 
bring the first half of the second cell onto the 
screen, 

Te move back by one screen press the B (back) key. 

Or, if you wish to move onto the start of the next 
cell then press the € (etc) key. This will move you 
forward by a complete name cell, rather than a half a 
cell. If you wish to move forward even more quickly 
then press the J (jump) key and you wil} advance by 5 
cells, 

If you press the D (dire) key you will jump forward 
approximately 3600 bytes to where the Disk name is 
stored. Or by pressing the T (top) key you wil] return 


to the very start of the buffer where you first 
entered, These commands then, control your movement 
through the buffer. 


Now to cover those commands which allow you to 
modify the buffer, 

Press the A (alter) key, and you will be presented 
with the option “Name or Track". Choose N if you wish 
to change a program name, or T if track numbers are to 
be modified. A cursor will appear on screen, and you 
can position it on the screen by using keys 0, A, and 
ENTER, This will determine where the new entry is to 
start. Then enter the destred changes. Terminate the 
entry and you will see the changes you have made 
reappear on the screen. 

When you have made the desired changes you may then 
__choose to save them to disk by pressing the S (save) 


UPDATE July 1988 
Programming 


4138 PRINT AT VAL "21", 00;"Tracks Opens "3 


fisa PRINT #25;"z to copy-Any other key For 

menu" 

4178 PAUSE 00 

1188 core VAL ec rr LET iS=INKEYS 

4199 IF ig=tzn COPY 

1200 do TO VAL nggppt 

22096 REM Program Header Reader 

2818 LET m=00 

2020 CLS : PRINT '" This option displays t 
information saved on each block 

B30" with the data." 

ae RINT ''"TRACK = The track number on 


aiag PRINT '''INAME - The File name is save 
on _each block for reference only" 
eas PRINT 1 INSTART, ~ The start address of 
when saving cod 
2800 PRINT P CERIN’ NCENGTH 2 The total le 
ngth of the File." 
g J60 PRINT #0;"Press any key when ready": 


AUSE 00 
a PRINT ' Or DER RI 


key. You will be asked whether you wish to save the 
buffer to the same track (usually) or to a new track. 
The L (load) key permits you to load another track 
{nto the buffer, while the M (menu) key will bring 
back the main menu. 

This has necessarily been a very abbreviated 
description of the operation of this program, and it 
may be adequate for some, If wish a more complete set 
of instructions you may obtain these by sending $3 to 
my address shown at the top of this listing. 


4 REM George Chambers, 
44 Richome Court 
gh, Ontario 


490 GO TO VAL "160" 


Scarborou 
CANADA MiK eY1 


410 RANDOMIZE USR VAL '49m'T: SAVE "doctor 
BA" 

VAL "39999'T: RANDOMIZE USR VAL 
nogre. LOAg (MHcode .c1""coue VAL "aggoo"" 

M 
155 ter aslé =: LET oa=4: LET ob=2: LET oc= 
3 
480 LET dr. VAL "43301": LET dr=oo 
188 LET Set ttack= crt 
LET n rack= 
Bua or VAL "4gggg"" 
VAL "49942" 


AL "43301" 

269 1 SutFersvaL "45000": LET bufflenth 
VAL, Hel opte CET lasteell=VAL "asad": LET 
diskname=4483 
270 POKE dri 
2g Let ise 

sid 
340 GO TO VAL Rsaaqn 


REM Track Used/Free Routin 
1a08 CLS : LET number=oo: GO UB VAL "7500 
" 

2 LET ot=c: LET ft=: 

1249 FoR n=l =bofrertVAL wast TO buFFer+VAL bs 
493" 
4 T_ t=PEEK 
1oe0 eT etvaL asn THEN LET n$=">Used": 
LET Ft=Ft+oa: GOTO VAL '"41gag" 
1070 IF t<>VAL east THEN LET n$="-Open": 
4H5G PRINT TAB (c);(n-(bufFer+vAL 2a") )5T 
AB (orob) ing; 7 
1990 LE ng 


@ IF c= SVAL "Je" THEN LET c=NOT c 


pas, 
prerere 


Nexnre AT VAL "28",00;"Tracks Used: "j 3 2 2530 LET t=0a 


aw 


2100 PRINT. "TRACK NAME 


START 
2140 PRINT "anmnnnnnnnnnnnn nnn nanan naan 


LENGT 


320 PRINT AT VAL "24", VAL '7"3'(M returns 
to menu)": PRINT AT 02,00 
2138 POKE track,oa: RANOOMIZE USR settrack 


2140 PRINT "8 Disk Directory Track"! 
2150 FOR t=oa TO VAL "79" 
2160 IF PEEK VAL "23689"<VAL "7" THEN GO 
SUB VAL "234g" 
2170 IF IN 16=00 THEN RANDOMIZE USR settr 
376 RANDOMIZE USA igad 
2198 PRINT PEEK (buffert+oa);TAB_VAL "5"; 
2209 IF PEEK (buffertoa)<>00 THEN ? IF PEE 
K (buf Fertoa) ot THEN] PRINT : PRINT "Tra 
or on Track 

SS4pTE Peek TbuPrertosl=o8 THEN PRINT : 
GO TO _VAL "e2egr 
2220 FOR a=(buffertob) TO (buffer+19) 
2239 PRINT CHRS PEEK 3; 
2240 NEXT a 
2259 PRINT TAB VAL "47"; PEEK (buf tertvaL Ld 
AQ )+VAL M256UxPEEK (buffert+VAL Ht) 5 
2260 PRINT TAB VAL "26"; PEEK (burrertVaL w 
gen d+val, "BOG" PEEK (bu Fer+VAL_"23') 

2270 RE! VAL "26's PEEK “(buf fer+ 
val wna aL hasettsPEEK (buffer+VAL "4a 


2288 IF side=oa THEN LET t=t+oa: POKE tra 
(PEEK track)+oa 


S880 RANDONTZE USA nexttrack 

2308 IF INKEY$= “mt? OR INKEY$S="M'"" THEN GO 
TO VAL coe 

2310 NE 


XT 

2320 NetnT “Last track=Press key for menu" 
: PAUSE ao 

2330 GO TO VAL "Saga" 

2349 PRINT 'TAB oc;' Press z key to copy o 

key & to clear Screen" 
THEN GO VAL "e350" 

zt" OR INKEYS2"2"" THEN GOP 


¥, 

2970 IF INKEYS="m'" OR INKEY$="M" THEN GO 
VAL "5ggatt 

2309 PRINT AT vat "4" ,oo;a$( TO VAL "544!") 


PRINT AT o 
3390 RANDOMIZE USR load 
2409 RETURN 
2500 REM Rename Program Routin 
S549 CLS : PRINT AT-VAL "5", VAL "7"; "Remov 
e Protect Tabs dite using Re 
name. 
3e7e PRINT TtRename = disk program 

Insert disk" 

2520 PRINT" ready7": Pau 
2525 DIM x$( VAL alt eae x8 
z$(VAL_"9''): DIM a jal tye 


€ 
SFR tg): DIM 


2535 CLS : PRINT USA VAL "Mga": Cale is 
8549 INPUT "change_name from "5 rs 
2545 CLS : PRINTS oe wa wag, nore Bit OTE: 
Name search can 2 min.” 

255@ GO SUB VAL FB6ion 

2555 POKE Eragks oo RANDOMIZE USR settrack 


: RANDOMIZE USR’ lo; 
e560 For qepurrersVaL ™488" TO buffer+VAL 


nase" 

2565 IF PEEK AL "2g6" THEN, LET keiton: 

FOR j=oa Tg T xB 01) =CHRS PEEK (i+j) 
yS THEN! TNPUE "change ha 

LINE x25) G0 TO VAL N2sag" 


= 

38 CLS: PRINT AT VAL "19" 00; "Progran n 

ot Found:"!"Prese any key For menu': PAUS 

E oo? GO TO VAL "Saab" 

$500 FOR _izge TO VAL way: POKE k, CODE z$(i 

Ji LET k=k+PI/PI: NEXT 

2585 POKE track, oot FRANOOMIZE USR settrack 

? RANDOMIZE USR’ 

2590 IF PEEK RQQVAL "253" THEN LET k=ktoa 
GO To VAL "25a" 

isos iF PEEK ({k+oa}=VAL "249" OR t>VAL "79 
THEN GO TO VAL “e6ig" 

__ 500 Ver eektoas 200 

at Vag" THEN “Cet a(tJ=see< 

zeae LET toa: GO TO VAL wesas" 

2610 LI 0 TO VAL "eeep" 

S15 TF altcditicale) THEN RANDOMIZE yur 

nexttrack? RANDOMIZE USR load: GO TO VAL 

126: 

2620 POKE track a(t): gRANDOMIZE USR settre 

ck: RANDOMIZE USR load 


2625 FOR l=oa TO at BORE buffer+1+1,CODE 2 
$(1): NEXT 1 
sese RANDOMIZE USR save 

5 LET t=ttoa: IF a(t)<>oo THEN GO TO V 
aL Rees" 
2640 CLS : PRINT PAPER ob; 


INK 7 pt 
WItErom Hiysst to 


$ 
Ene PRINT #0) "Press Bren to enema: anoth 


has been renamed 


or Mint! For Mai 
S659 PRUSE 00 oo! IF INKEY$=1 CARS 13 TeENS ‘so 
TO 2515 

26SS 82, uy VAL "Spoe"" 

2660 S 

3008 Rew” Dir Analysis Routine 

3010 CLS : LET number=oo: GO SUB VAL "7526 
3920 LET fn=o0: LET d=o00: LET n=buffer+VAL 
48 

apn” PRINT #1;"z=copy c=cont m=menu t=t 


Bsa IF PEEK VAL "23689"'<6 THEN PRINT AT 


90,00;a$: PRINT AT 00,00;"* Directory / F 

ile Data Report #" 

3060 LET fn=fntoa 

Bee PRINT "Filename "3fn3":";TAB 13; 
3082 LET n=ntoa 


3090 IF PEEK n=253 THEN GO _TO VAL eontae 
3100 IF PEEK n=VAL "254"! THEN GO a 


PRINT PAPER SsCHRS PEEK nj: PAPER 7 
GO TO VAL "3gag" 

PRINT TAS 00;"Tracks used: 
LET Ft=00 


ter ft= Pee 
iF PEEK neva "24s" THEN GO 


3 
310 PRINT (PEEK sys 
c=ctoc 
VAL i 
5 EME Rey, name celi' 
Seen 


VAL 
3240 PRINT 1fE-oa;" "sbufflenth;" Byte) BL 
s 


3380 PRINT, Neen nnn nnn nnn nnn nnn nena: wenn 
ANI D 


C 
3260 ter n=n+1 
3270 IF n=buffert+iastcell THEN PRINT 
st name cell.Press m For menu't: PAUSE 
GO TO VAL "Sagg" 
3280 IF PEEK n=e55 THEN GO TO 3302 
3290 GO TO 3260 


TO VAL 


MLSs 
eo: 


3.3 


AND PEEK k<V Saag 


UPDATE July 1988 
Programming 


rece 23658,08: 


LET i$=INKEYS 
sft HEN Cony 
co" THEN GO TO 3950 
m' THEN GO TO 50g0 
t'' THEN GO TO 320 
é 18 3500 
4900 REM Track Manipulation 


~ Routines 

4019 CLS : LET m=o0 

4920 PRINT "Examine which track? (g-79)" 
4030 INPUT number 

4949 GO suB VAL "75p0" 
4050 GO TO VAL "agag" 
4960 BORDER 7: PRINT 
k cont, dire etc jumps 


4878 RETURN 
4982 Cl 


aasa 6b SUB 4960 
4190 FOR n=buffer TO buffer+bufflenth STEP 


4 
Red PENT AT 0,6; PAPER 6;"Reading track 


Tent 
Bien’ PRIRT AT aa” "GAT 1,43 "addr 


INK 7;#0;" alter bac 
load’ menu name se 


ma 


epyte_cnegt 
_x=n_TO_n+: - 

4149 PRINT x;TAB 93 xcbufferi iTAB 17;PEEK 

WN STAB 257! PRINT CHRS PEEK x AND (PEEK? 
x34 “AND: BEEK me teay gin ANO (number=@ A 
ND PEEK x>248 ANO PEEK x<256);: PRINT ' 


4150 NEXT x 

4460 GO To 4169 

4170 NEXT n 

4180 POKE B36sa, O: LET ig=ttt: LET i$=INKEY 
AND n<=58111 THEN GO TO 41 
THEN GO TO 4990 
THEN GO TO 4319 
THEN GO TO 4630 
HEN GO_TO Sada 
THEN LET n=buffer+171: GO 


4250 IF_i$="e™ AND n<=S0994 THEN LET n=nt 
17: ee TO_4170 

260 IF is="b' THEN LET n=n-34: GO TO 417 
4270 IF iS=t"j" AND n<=a9924 THEN LET n=n+ 
187: GO TO 417 

rg a eo THEN LET n=buffertdiskname 
azsa IF iS="t" THEN LET n=buffer-17: GO T 
4300 GO TO 

4310 IF TNkeyeeome THEN, 60, TO 4340 

4320 POKE 23658,0: LET : PRINT AT 20, 
@;"Change Name ér Track” N/T? ": LET ig= 


oP IF i$<>"n't AND i$<>!t'" THEN GO TO 43 
4328 IF INKEY$<>""" THEN GO TO 4340 


4350 PRINT AT 49,03" Select Start addre 
keys Q, A, and ENTER" 

4360 LET reir “LET 2-3 

4370 PRINT AT 2,163 FLASH 15"2"; FLASH @ 

4385 IF INKEY$=faM"’ AND 2<18 THEN LET y=y+ 

43 PRINT AT 2,465" ";AT 241,163 FLASH 43% 

>") FLASH @: LET z=z+4 

4380 IF ENKEYS="g" AND 2>2 THEN. LET 


y PSENT AT 2) gsi SsAT 2-1, 16) FLASH HN" 
ak FLASH ee 


=41 
a ue rhkeye chine 13 THEN LET addr=y: & 


faig GO TO 438g 

4420 IF addr<buffer OR addr>bufflenth THEN 
PRINT AT 20,0;"Address out of Fangel!"P 

ress any key to’re-enter": PAUSE : GO TO 


4430 IF i$="t" THEN PRINT AT 19,93; INK_2; 
En 


eae FES) to Step, 
4aag TE i erat THEN INPUT "Enter Prgm Nam 
e: "sn$s 


60 
4aso TF sent Tred INPUT "Enter Track nu 
mber: "32: 


TO 4470 
ggee IF’ epee AND z$<>'"'n" THEN GO TO 44 


4470 IF z=2968 THEN GO TO 4580 

4489 IF PEEK addr=255 OR PEEK addr=2e53 THE 
N PRINT AT 20,4; INK qilovarwriting ama 
rker at "yaddr;TAB 32'"00 you wish to con 


tinue? by/a nj": INK @: PAUSE @ 
4485 POKE 23658, @: IF INKEYS="n"" THEN GO 


[a] oe Ke addr ,z 
4500 IF _z=249 tHEN 
4510 LET addrsaddr+1 
4820 GO TO 4450 
4530 FOR a=1 TO LEN n& 

asap TF PEEK addrse5e OR PEEK addr=253 On 
PEEK addr=249 THEN PRINT AT 20,4; INK 23 
"Overwriting a marker at ";addr}TAB 
De you wish to continue?(yJnj":° INK B: PA 


Cl 
aea5 ae 23658,0: IF INKEY$="n'"! THEN GO 


4550 POKE addr,CODE n$(a) 
4560 LET addr=addr+1 


4578 NEXT a 
4580 CLS : GO SUB 4960: GO TO 4119 
THEN LET p$=p$( TO LEN 


GO TO 458g 


UPDATE July 1988 

Programming 
S020 PRINT INK 1;"You are in Drive "ydrs 
6230 PRINT "Disk Name : "; 
6040 tee LS VAL Nagao" 
6050 Li INKEY$: IF INKEY$=""' THEN GO 
Poe vaL™ tepep" 
6g60 IF ae ne 


Oo THEN GO TO VAL "6g5g't 


-6070 BEEP 
6280 IF OBE Pasta THEN PRINT CHR$ 8; CHAS 
32;CHR$ 8;: LET m=m-o00: GO TO VAL ugh3on 


6099 IF CODE OS ayAL "226" THEN POKE m,oo: 
GO TO VAL "64 


GO TO VAL "5139" 
10 TO VAL "695g" 


5@ POKE m,oo: PAUSE VAL Aone ie cLS 
618@ Poke VAL "43312",00; REM 6=0 12=1 20 


=2 39=3 
6202 INPUT "Head speed 6 12 20 30 MS ? "3h 
8210 IF HG OR h=12 OR h=20 OR h=3d THEN 


tS} 


614 

612! 

6130 te INK! yeep THEN 
pe Gl 


Agee IF LEN p$ 
2 piggr 
35psi 


4600 PRINT AT Li O42: 
4610 ad F ENKG Tg oo" THI GO TO 4610 


4630 oP INKEYS<>"""" THEN, GO TO 4630 
4649 POKE 23658,8: LET i$=INKEYS 
4650 INPUT WSavé to Same or New track? "si 


$ 
4660 IF TNKEY SCH THEN 60 ue 4660 
4670 IF ="s" THEN GO TO 

i ast tt THEN GO TO 4580 

<>tst OR i$<dttn"! THEN GO TO 464 

17) 
4700 GO SUB VAL "76gg"' 
GO TO VAL "4gaa" 
INPUT "New track number? "3 number 
4750 IF INKEYS<>"" THEN GO TO VAL "4750" 
4760 IF number>VAL "79" THEN GO TO VAL "4 


4770 GO SUB VAL. "760" 
4786 GO_TO VAL es a 


4730 LET p$=p$( T 
4800 PRINT a Vat oWaBN, Vac Hap; pSsiszs 5 
PAPER VAL 't7"" 
4819 GO TO VAL 4730" 
4820 COPY 
4630 GO SOTO VAL naten" 
5010 BORDER. “ob? INK oo: PAPER 6: CLS 
5820 PRINT OISK DOCTOR vee 
est 
5030 PRINT ' For the TS 2968 
and LARKEN DSK4a¢ 

G.F. Chambers" 

5944 PRINT AT VAL "5", VAL "4'3!"4, Tracks U 
sed/Free" . 

I5@ PRINT '!? 2. Program Header Reader"! 
5@68 PRINT ''" 3. Dae sekory. Analysis" 
5070 PRINT "tt 4. Examine/Modify a Track 
598 PRINT !!" 5S. Rename a Pro pam" 
5090 PRINT ''" 6. Format a Dis! 

S100 PRINT 10 7. Select Drive (Now Orv 
Ry FLASH oajdr; FLASH 903'7)"" 
si1p PRINT It) 6, Exit'ta Main Disk Menu 


5120 PRINT ttt 
S130 PAPER 73 
igs" 


>";"PRESS A KEY'': PAUSE 
LET LESEMKEYS 
" OR i$> 


Ba "8" THEN GO TO VAL '" 
5150 IF i THEN GO TO VAL "1990" 
S160 IF i THEN GO TO VAL "egg" 
5170 IF i THEN GO TO VAL "3990" 
5180 IF i THEN GO TO VAL ‘4ggg" 
51908 THEN GO TO VAL "espn 
ee ae Bey Ne sas Be 
521g IF igau7" 7 josaS( TO 
32): Go Sup VAL eotpt: Ngo to VAL *Sao0" 


5220 IF i$="e" THEN GO TO VAL "8900" 

5300 STOP 

6998 GO SUB VAL "8919's PAPER 7: CLS : PRI 

NT BE CRUAL PROGRAM fi CN esas osk4ga" 

6019 PRINT ; PRINT DISK NAME OR OT 

SK GESCaTP-TZON uP ton \o00 CHARACTERS. . 
ESS DELETE TO BACKSPACI ESS 

'sTOR! TO END OISK NAME 


ces TO-VAL 
3228 GO TO VAL. ergeao" 
8258 IF h=6 THEN LET 
6240 a h=12@ THEN LET 
28 TEN LET 
iF ‘30 THEN LET 
6270 POKE VAL ''43312",a 
6289 INPUT "Number of’ Sides "Sa 
6299 IF a=oa THEN GO TO VAL fesog" 
6300 IF a=ob THEN GO TO VAL "6329" 
L e62ag"" 


AT 8,838;"’ Sided"? 
INPUT "Number Of Tracks "sa 
6350 POKE VAL "45317", 


6362 PRINT AT 9 B3a3n? Tracks" 

6378 INEUR "Ok Format "5n$ 

6380 IF npcoryn THEN CLS ! PRINT “OK TO R 
8396 RANDOMIZE USR VAL nagaoay 

6400 CLS : BEEP .2,10: BEEP .2,-2 

8410 GO TO VAL wipbo" 


7580 BEM Load a Track 


7511 POKE track,number: RANDOMIZE USR sett 
racks pe NQOMEZE USR load 

7550 Al 

7600 REM venve a Tra 

7601 CLS 3; PRINT Al fa 6;'"Writing to track 


"snumber! '""" Remove WartE PROTECT sticke 
5803 IF INKEYS<Su THEN” GO’TO 7603 

7604 PAUSE oo 

7611 POKE track,number: RANDOMIZE USR sett 
Peck? oe CRADLE USR save 


8020 STOP. 

89108 INPUT "Drive @ to 3 7 "3h 
8920 LET dr=h 

8025 LET oa 

8930 LET h=2e*h 

8048 FOKE drive,h 


3520 RANDOMIZE USR VAL "19g": 
99980 SAVE "doctor.B1"" 


LOAD "menu.B 


Note: This excellent LARKEN 
program cannot be included in 
July/April Issue disk because 
the disk space is maxed out and 
there is no space left. But not 
to worry! This and another 
absolutely GREAT Disk Manager 
program (for next issue) will be 
included in the next issue disk, 
along with some Larken programs 
by Larry Kenny. 


34 


The BUDGET SOFTWARE, PART IT 
Continuation from the April UP-DATE issue 


This BIG software began in the April issue. 
Some repetition is included for convenience of 


reading. There are several ways of attacking this 
group of programs. You can key in the listings, 
which will give you a operating BUDGET and 


SPREADSHEET program “in basic". Then you can use 
the TIMACHINE compiler program to convert the two 
Basic programs into fast running Machine Code. This 
will require you to have or to buy the Timachine 
software from Novelsoft or a distributor. You could 
use a different Basic to MC Compiler, but if you do 
you'll be on your own! Of course, the easy way and 
likely the most practical is to order the April 
Issue disk to get the fully operational software 
(and a bunch of other programs and utilities). 


with Timachine, 
college semester on programming, except there are no 
tests (but no Girls either!). At my age the latter 
poses no problem of social signficance. If going 
this route, use the Check Sum tables given in the 
April and this issues for the two programs that are 
to be compiled. There are two things to watch for. 
One is the similarity of the characters "i" (eye), 
™" (el), and "1" (one). Take a look on page 9-18 
of the April issue, Line number 40. Notice the 
difference in the number 1 (one) and lower case "L". 
There is a difference but it is small. Also notice 
in line 320, that "i" can be mistaken for lower case 
"Ey 


There is one more key-in error to watch for. 
Several LET and PRINT statements must be entered in 
the INVERSE mode (HOLD CAPS SHIFT and touch 4) after 
the first quote, then (CAPS SHIFT and touch 3) 
before the last QUOTE. These highlight the menus, 
Line numbers that require this INVERSE print are the 
LET and PRINT lines of the BUDGET.BJ program: lines 
470, 480, 490, 2250, 2620, 2930, 3080, and 3240. 
Bach failure to use INVERSE in these lines will 
result in the check sum table being off 4 bytes for 
each omission. The check sum table is given in ten 
line groups. Type CLEAR ENTER, then PRINT FREE. 
The check sum will not be accurate unless you 
started the key in project with a cleared computer 
(OFF and then ON) and 38652 FREE bytes. Loaded Code 
programs, such as a printer driver code, will throw 
Of£ the check sum figures. Solve this by OFF, then 
RE-LOAD. 


‘The "SPREAD.BJ" program (given in this issue) 
is the second BASIC program listing which already 
includes the Timachine commands needed for COMPILING 
the Basic program into Machine Code. The Compiler 
conmands begin with (REM!) and can be entered 
directly in each line as given. Once finished with 
the program Key-in, SAVE it to Disk or Cassette. 
Then LOAD the TIMACHINE program and pick up the 
instructions given in Bob Mitchell's Documentation 
in this issue "Part II". I would advise that you 
NOL make any program changes for your first attempt 
at keying in and compiling the SPREAD.BU program. 
Later, after the whole integrated program group is 
checked out, you can then feel confident to go back 
and make custom changes to the two Basic programs 
"BUDGET.BJ and SPREAD.BJ", and re-compile these 
custom programs which includes your changes. 


Now to discuss the additions made by UP-DATE 


~adapted. 
set of programs. 


UPDATE July 1988 
Programming 


the two ancillary LOADER and DISK MENUS. For 
identification, Bob calls “budget.Bx" a "loader / 
manager". UP-DATE's listings names this “BUDGET.B1" 
and gives three different DOS versions. It was 
found that some conflicts existed when a previously 
Yoaded CODE program had not been eliminated before 
loading the budget and spread code programs from 
disk. Therefore, the "Cclear" CODE program was 
added to clear memory when the budget program is 
first loaded. See "Cclear explanation in this 


issue. Also, the re-set of RAM TOP was not 
included. The large budget and smaller spread codes 
are loaded without change of RAM TOP. This 


eliminated a chancy stoppage report of “out of 


memory" with one of the DOS versions. 


The DISK MENUS: Bob made mention of adding a 
disk menu, and UP-DATE added one for each of the 
three DOS versions. These disk menus can easily be 

"to other_uses_for coordinating a_dif ferent 
In this instance, each of the Disk 
Menus give more options and allows you to place the 
Budget software on stand-by to do other computer 
functions. Beware of the fact that there isn't much 
FREE memory to add other programming lines. 
However, the menus are designed so that if you 
should happen to overwrite the Budget Code, it can 
be brought back in to resume. You would just lose 
the data "in the program that was in memory". Start 
up can be by loading either BUDGET.B1, or Menu.B1 
first. The Issue Disk uses a jazzy kaleidoscope 
auto boot utility, which also can be re-used for 
other effects. 


The Budget Program ensemble takes up a lot of 
space in UP-DATE, is NOI a simple "week end key~in 
project", but does provide an extensive and complete 
software system to explore over a long period of 
time. Please feel free to call or write if you get 
stuck on something. | For those of you who really 
want to delve into the programming, sufficient 
documentation is given to use your imagination and 
make this BUDGET software into a variety of 
different Spreadsheet applications. Be Bob 
Mitchell's guest! By the way, I changed to a new 
print wheel that gives a better Character "i" (eye), 
but alas, the ones (1) ami lower case "L" look the 
same. So, I will circle lower case "L" in the 
listings when not obvious. If used alone and not 
circled, its a "1" (one). 


The Aerco proode is used for the LARKEN DOS 
and the AERCO FD-68 DOS versions. For Larken DOs, 
this is the early cassette code as supplied with the 
Aerco printer interface (starting address 64000 and 
800 bytes). For the FD-68 DOS, the code is that 
supplied with the Aerco FD-68 and Jack Dohany's 
"RALOADER" program, which is re-locatable (Starting 
address is 64500 and is 867 bytes). For both see 
the utility program listing "INIT" given in this 
issue. 


Bob Mitchell's documentation which follows 
contains a notation at the top left corner of pages. 
This is the TASWORD file program which contained the 
text sent to UP-DATE by Bob, The print outs of the 
docunentation were done with the utility "MS~-TAS" 
(Listing is given in this issue). Next will be 
given the "SPREAD.CJ" basic listing to be compiled 
by use of TIMACHINE, and following that will be Bob 
Mitchell's “Part II” documentation, and finally the 
Basic loader "BUDGET.B1" and the Disk Menu "Menu.B1" 
will be given. The utilities "MS-TAS" and "INIT" are 
included in the April Issue Disk", along with the 
complete BUDGET ensemble and several more programs. 


for the three Disk Operating Systens. This involves 7 _ See the April Tssue Catalog given elswhere. 


3. Copies of the Tasman utility “taswide" and the "tasword" word 


Code pgm, "bujJ3.CI"33280, 11200 


DOCUMENTATION FOR BUDGET 
PART IT 
By Bob Mitchell, Willowdale, Ontario, 
Provided to TS Update Newsletter 
(Revision dated 880414) 


WHAT UEILTIES YOU WILL NEED ====s====: 


1. A copy of the BASIC compiler "Iimachine” (the amended version 


that handles the *D and *E routines properly) to compile 
"budget" and "spread". 
2. A Centronics printer interface code; “budget.Bx" as shown 


uses the "aerco" pecode or, alternatively, the Larken extenied 
BASIC printer code contained in its EPROM cartridge. 


processor program are optional. With these you can type up some 
help pages and recall them when needed to refresh your menory 
while using "budget". Hore on that later. 


‘THE MAIN PROGRAMS =: 


4. ‘There are three programs: 


a) budget.Bx expanded “Loader/nanager" or input/output 
program; this will NOT be compiled. 

for compilation; change the category names 
in line 590 to suit your needs, before you 
do the compilation. Pad out each name in 
this line with spaces to a total length of 
ten. 

also for compilation; change line 8250 to 
match the names in line 590 in your 
version of budgst.BJ. No extra spaces will 
be needed in line 8250. This program will 
run slowly in BASIC providing you are 
using the Larken cartridge or Aerco 
*proode.Cl". 


b) budget.BI 


¢) spread.Bo 


= THE LOADER/MANAGER ==2ssssecusss=sssssess 


5. TYPE IN THE LOADER, "budget.Bx". Check your typing carefully 
and SAVE it to disk (GO TO 310); then SAVE it to tape. You may 
want to make the loader into your autostart program, This option 
is not on the menu but is located at line 400 (for Larken). 


===== BUDGET COMPILATION 


6. Now restart your 2068 (turn power off, then on ~~ disk drive 
gate OPEN!) and LOAD TIMACHINE. Remember! You must have the 
corrected version of Timachine. Then LOAD the TAPE version of 
"puget that you saved earlier (the one with no budget values). 
Make the change to line 590 explained above (para 4b). Compile 
the progeam; you will have to SAVE TT TO TAPE in the two parts 
(*D and *B) mentioned earlier . Make sure your 2040 printer is 
turned on so that you get a printout of the runtimes and 
variables generated by Timachine during the compilation process. 


7. Save this Timachine printout (with variable m/c addesses) 
for future use. Restart the 2068 and LOAD the TWO parts to the 
CORRECT ADDRESSES as instructed by the Timachine prompts. RUN 
the program by entering RANDOMIZE USR 32000. If you do not 
initialize via 32000 you will get strange results later as some 
variables will not be set up. If all is well, you should have a 
pull down menu on the screen. Enter the Date and budget Year to 
complete this menu. 


8. LOAD "budget.Bx" from disk and check the USR addresses and 
the SAVE code length in it to ensure they are what you got frow 
your Timachine print-out. You will have two entry point 
addresses, one of which is 32000 and the other which is 
generated by the second REM I OPEN # which should be 37166, If 


36 


UPDATE July 1988 
Programming 


it is a different address, then you have altered the length of 
the program and you will have to change <37166> in loader” lines 
190 & 260 to your new second entry point address. Snsure that 
the code length in loader line 40 for the SAVE represents the 
total of the cade lengths from the *D and *E parts plus the 
length set aside for machine code variables. The latter is the 
area that will hold the budget amounts. Now ReSAVE "budget.Ex" 
to disk and just to be safe, to tape, too. 


% 
entire year. It is best to work these out on paper first! 
enter the actuals for the year so far. 
displays at this point and if you are satisfied, 
compiled program with your budget amounts li 

in the loader. A SAVE to TAPE would also 
out by powering dom and LOADing "budiget.Bx" 
"budget.cJ" using option 2. 


10. When you QUIT "budget" you return to the loaders you can get 
back to the budget program by using the restart option 4. 
Nothing will happen when you do this unless budget is loaded. 
Next time you LOAD budget from the disk, use option 2 to dump 
all the data for viewing or further ontries. You can start 
afresh (with no data) using Option 1. If you don't want to use 
help routines take out lines 185 and 186; and change "6" to "5" 
in line 150. If you are using Larken DOS then delete line 330; 
remove the token <RED fram lines 65 and 333 and change line 196 
to read <IF k$="5" AND PEEK 32000=205 THEN CLS: RANDOMIZE USR 
58400: GO TO 60>. 


Now you are ready to enter your budget amounts for the 
Next, 


Check out the varicus 
SAVE the 


=== SPREADSHEET =: 


11. Rey in the spreadsheet progran "spread.BJ". Change the DATA 


in Line 8250 to match your budget program category names. No 
extra spaces are needed here. 
12. T€ you have changed the length of “budget" at all, some 


changes will be needed. Examine your Tinachine printout for 
"budget" and locate the arrays indicated in lines 9340 to 8370. 
Change variable <first> to the address of each array in turn. 
Change variable <last> to the address of the next variable on 
the printout minus 1, Next, locate the arrays shown in lines 
8590 ard 8600. Change the variable <i> in each case to the 
address for that array minus 60. Now, SAVE “spread” to tape and 
to disk (GO TO 9000 for the latter). 


13. Spreadsheet is now ready for use. If you intend to compile 
it with Timachine, jump to para 14 below and disregard the rest 
of this para. You may merge “spread.BJ" with the loader 
"budget.Be" and use it as a BASIC program enticely. You will 
have to change <RANDOMIZE USR 58400> TO <GO SUB 8000> in line 


195 of the loader. Change line 8620 of "spread.BJ" to read <GO 
TO 60> in Lieu of <STOP>, There will be some other mince changes 
to do after the MERGE: DELETE line 335; CLEAR 29000 in line 400 
will not be high enough if you want to SAVE this as an AUTOSTART 
The 


version (Larken); try 30000 or higher. Delete line 9000. 
spreadsheet will print out quite slowly so be patient. 


seuusuaacscscscessss SPREADSHEET COMPILATION 


14. O€ course, compilation is the way to go! LOAD Timachine and 
then "spraad" from your tape. Do the compilation and SAVE it 
according to Timachine instructions. Restart the computer and 
LOAD "spread. CJ"CODE 58400. SAVE it immediately to your disk as 
"spcead.GJ"CODS 58400,length; where the latter is the length 
shown in the Timachine SAVE instruction at the end of your 
printout: <SAVE "Vc" CODE addcess,length>. 


1S. Now restart the computer and try what you have done. LOAD 
‘the loader “budget.Bx" and use option 2 to LOAD your budget 
code "budget.cJ"; make sure your printer is ready and then use 
option 5 to print out the spreadsieets. Each of the four sheets 
should print out in about two minutes. 


code pgm, "bujJx.CI"33280,2944 


60 


65 


180 


185 & 186 


SAVE budget with data fron mens option 3. 


code length 25923 is the sum of the *D and *E 
parts and the bytes for m/c variables from the 
Timachine compilation. 

The menu (Budget Input/Output) starts here; ON 
ERR RESET restores the BREAK facility which ON 
ERR GO TO activates elsewhere ; CLOSE #2 
restores channel 2 to normal; OUT 127,18 
restores the wide printer font to normal PICA 
size; POKE 26703/4 restores Lprint to the 2040 
printer. 

Larken extended BASIC commnd to restore Lprint 
to normal 2040 printer. This line is inactive 
due to <REM>. 

SAVE will not take place unless Budget is loaded 
due to PEEK 32000 which must be 205. 

Print “help” routine called here, You must have 


190 


195 


220-240 
250-270 
290 
310 
330 
333 
335 
400 


Code Pam, 


8000-8030 


8050-8210 
3250-8260 


8270 


3280-8620 


8630-8780 


taswide on your disk as well as the telp 
program. If you BREAK, action goes to line 186 
due to ON ERR in line 185, then restores font to 
normal Sinclair and prints a bottom line promt 
"ENTER". 

Restarts "budget" complete with all data; this 
will not work if budget is mot loaded. Check 
that the address 37166 is still the correct 
second entry point from your Timachine 
operation. 

This line is set up to reload the serco preode 
which will be destroyed only if the help routine 
is called. If you are not incorporating the help 
routine, this line can be changed to remove the 
comands to reload proce ami do the POKES 
stow. 

Initializing routine. 

Load budget with all saved data. 

Save roubine starts; goes to line 40. 

Save the loader, 

Load the Aerco print code. 

Optional use of Larken print coie. 

Load the spreadsteet compiled code. 

Autostart save (Larken). 


-30- 


"bu jds.CI" 33280-2048 


SPREADSHEET -- PROGRAY BREAKDOWN 


Timachine instruction. 
Print Using routine. 
DATA for t$(19,10). The 19th is for "DOIALS>>" 


Set the parameters for Print Using routine. The 
value of u$ is set to cater to numbers as large 
as 999999,99 which in the budget program will 
handle up to $9999.99 ard still leave a space 
between colums (months) to make the spreadsheet 
more readable. 


‘The Print Spreadsheet routine, This routine uses 
two FOR, ..NEXT loops <i> and <q which, £or each 
of the four types of spreadsheets, look at the 
machine code fron <first> to <last> in STEPs of 
60 and PEEK out the five bytes of each floating 
point number (lines 8410-6450) jit then mves to 
the sub routine at 8630 to turn these into a 
printable decimal number (ie, with dollars and 
cents). Note the boolean logic used in Lines 
9310 and 8490. 


Coversion of floating point nunbers to decinals 
for the printout. 


-30- 


Bob Mitchell 880415 


Gifts 


Groceries: 


Bousing: 


Insurances 


Leisure: 


Mise. + 


Personal: 


Vacation: 


37 


__Including——_cards,.. 


UPDATE July 1988 
Programming 


The Code pam, “help.CI"32280,3968 


BUDGET CODING SHEET dated 880411 


Expenditures by Category 
Major items such as furniture, 
renovations. Others in Misc. 


appliances, 


Including accessories: purses, wallets. 


Do not include costs paid by insurance,etc. 
Insurance premiuns in Insurance. 


Including water heater rental or repair. 


Including any maintenance. 


_weapping, charitable _ 
donations, Christmas cards and wrap. 


ALL food ard non-food items (except Liquor, 
beer and wine whethor purchased at 
supermarkets, drug stores or other grocery 
outlets,and including health care items (but 
not patent medicines) . 


insurance, 
furnace 


Mortgage or rental costs, home 
repairs to major appliances (but 
repairs in Gas). 


Premiums for home, car, medical, dental, life, 
unemployment ani other insurance policies. 


Dining out, take-out food, movies, VCR movies, 
movies, Cable TV rental, — entertainment 
equipment and entrance fees. 


Used at home. 

Prescriptions drugs (less costs paid by 
insurance); patent medicines, doctor and 
hospital bills (less costs paid by insurance). 


General items such as magazines, newspapers, 


stamps, Lucaya fees, stall housetold items 
(apply sales tax rebates here). 

Magazines, hairdo's, perfune and other 
cosmetics, hobbies (computers, photography, 
sports). 

Including purchase of telephones, recorders, 


etc., used with telephone services. 

Realty taxes. 

(ar costs including insucance, parking costs, 
public transit and taxis, car and drivers 
licences, air,train and bus tickets. 


Telephone, lodgings and food on trips, home~ 
sitting, (car costs in transportation) 


=10- 


UPDATE July 1988 
Programming 


VARIABLES 


‘THE TABLES cae 


Numeric arrays 
: (18,12) PLANNED values per category per month. 
Table 1 is a break-down of the "budget" program identifying its  e(18,/12) ACIUALS values per category per month. 


najor parts along with some useful sub routines which might be — m(18,12) TOTALS YTD PLANNED per month per column (category) - 

incorporated in other programs. (18,12) TOTALS YTD PLANNED per category per Line (month). 
u(18,12) ‘TOTALS YTD ACTUALS per category per line., 

Table 2 is a break-down of the "spread" progam. This program (18,12) TOTALS YTD ACTUALS per month per column. 

contains a PRINT USING routine and a conversion routine to 

change floating point numbers to their decimal equivalents. — k(18) TOTALS (PLANNED or ACTUALS) for graph routine. 
(18) Pie chart array used to calculate sectors. 

Table 3 is an optional RELP routine which Larken users may add — q(18) Bar chart array used to calculate bars. 

to your disk and called up from “buiget.Bx"; this gives (18). Pie chart acray used to calculate sectors. 

suggestions on allocating different types of expenditures to the (18) Pie chart array used to calculate sectors. 


18 categories. You should tailor your own help routine to suit 
your chosen category nanes. I used Tasword to type in this table String arrays 
and ‘Taswide to call it up in 64 characters-per-line format; the  $(18,10) Category names. 


larken conmand PRINT USR 100: PRINT “help.cI" allows the help — o§(32) 32 spaces for erasing. 
coutine to be displayed on the screen without interfering with  m$(12,3) Month names (3-letter abbreviations). 
the budget program, See “"budget.Bx" lines 185 amd 186 for — t8(3,11) —1=PLANNED; 2=ACIUALS; 3=COMPOSITE 
details. (all in INVERSE VIDEO) 
le 4 is a break-down of the loader program. “Strings eis ai oa ES = 
; es Mer item fcom DATA lines (Line 300). 
fob Mitchell 880415, 3s ‘Temporary store for t$() in graph display. 
-30- ks INKEYS. 
ng File name. 
Code pgm, "bujJb.CI"33220,8320 os Menu item from DATA Lines (T.ine 5AM). 
$s Input control. 
BUDGET ~~ PROGRAM BREAKDOWN s$ Justification workspace. 
xS Date. 
20 First entry point with Timachine (used only when y$ Year " YY 
initializing a new year budget. 2g Input control. 
110-180 Add zeros. 
200-280 Menu outline; sub of menu routine at 300. Numeric (excluding FOR. ..NEXT) 
300-400 Print menus (370-400 controls menu cursor). bal Worksteet balance (actuals input). 
420 Set array sizes. of Continue flag used in display menu. 
430-550 Set variables. cf2 Continue flag used in inputting Planned. 
360-570 Load b$() with category nanes. c Colum nunber. 
580-630 DATA lines for sone menus. cr Counter. 
590 NOTE SPACES TO PAD OUT ALL DATA ITEMS TO TEN 4 Category number. 
CHARACTERS IN LENGTH. e Length e$ used in menus. 
$50-690 Move menu cursor down. exch Currency exchange rate. 
700-740 Move menu cursor up. exp Expense during inputting Actuals. 
750-820 Data input totaling. max Mex value for graph. 
930-850 Data totaling for display. gc Graph category (PLANNED or ACTUALS). 
360-870 Calculate totals for graphs. gt Graph type (PIE or BAR). 
900-910 Calculate k() array for totals (planned or of Graph flag (flags are used in branching). 
actuals). k Keypress value in menu operation, 
920-1310 Right. justify screen display of integer values kl Derived from k in cursor move routine. 
of arrays and totals. 1 Month number. 
1060-1070 Print negative values in PLASHing RED; others Jo Flag used in justification routine. 
in normal colours. loc Location in printing bar charts. 
1320-1440 Change PLANNED values, one by one. nl Derived from rl. 
1460 Second Timachine entry point. Used after nin Minimun in graphs. 
initializing to preserve all data. n Month number used in YTD totaling. 
1470-1630 Main menu. ° Value used in DRAWing menu outline. 
1640-1700 Menu for input of PLANNED data. ol Ditto. 
1710-1760 —_Inpute values for whole year. . ‘Temp store for month number. 
1770-1800 ‘Totaling PLANNED data for each category. pe No. of items for menu. 
1810-1870 | Geand-totaling PLANNED data for all categories. py-Px ¥ and X coords for pcinting menu. 
1880-1919 Set. buxdget_year. pw Max item width for given menu. 
1920-2040 Menu for Display routines. pp Print position for graphs. 
2050-2400 ‘Display PLANNED data. pe Integer of percentage. 
2410-2730 Display COMPOSITE data. rl Radius of pie chart. 
2740-3000 Display ACTUALS data. 8 Totaling (summation). 
3010-3360 Display CATEGORY data. 2 Totaling actuals. 
3370-3790 Input ACTUALS data. sad ‘Totaling for actuals graphs. 
3800-3970 Display Menu for Graphs. ead ‘Totaling for planned graphs. 
3990-4750 Pie chart routine. sb Totaling planned. 
4760-4960 Table displays. sca Seale used in bar graph. 
4970-5400 Bar chart routine. sf Totaling planned for year. 
3410 fd Timachine compilation area ss Integer value of array item. 
sss Integer YTD PLANNED percentage. 
st Array type to be generated as s$. 
st3 Integer of t3. 
3 Derived £ron sa2 or sa3. 
tp Totaling percentages. 
xdLyl eordinates for PLOT in pie chart. 
x2,y2 Derived from xl,yl to print category codes. 
z Input control. 
3 8 2z Integer used in printing bar chart. 
= 30 a 


The "spread.BJ" basic program for compiling with TIMACHINE 


After Key-in make sure that it works. 


Load ard initialize a 


printer port code, then type RUN, and enter "P" for planned 


8000 REN !LEN $<=32 
8005 REM ! LPRINE 
8010 REM ! LIST 
8020 REM !USR 58400 
8030 REN ! OPEN # 
8040 Go TO #270 
8050 
8060 
8070 
8080 
8090 IF i =CHR$ 46 THEN LET id=L 
EN u$-j 

8100 NEXT j 

8110 LET x§=SIR$ (SGN num* (INI ( 
ABS num*10®id+.55) )) 

8120 LET xd=LEN x$-id 

8130 FOR j=0 TO -xd 


8420 LET e=PEEK (itm+1) 

8430 LeT EK (i+m+2) 

8440 LET c=PEEK (i+m+3) 

8450 LET b=PEEK (itm+4) 

8460 GO SUB 8630 

8470 GO SUB 8050 

8480 IF INKEYS=CHRS 13 THEN GO T 

0 8620 

8490 IF cat=19 AND (iS="Q" OR i$ 

="B") THEN LET numl=num: GO TO 8 

750 

8500 LET tot=tot+num 

8510 POKE 23692,-1: LPRINI x$; 

9520 NEXT m 

8530 IF ig="P" OR i$="A" THEN LE 

T num=tot: GO SUB 8050: LPRINT " 
x8 


UPDATE July 1988 


Programming 
8610 
8620 
8630 IF a<>0 THEN GO TO 8680 
8640 


8650 LET num=256*ctd 
8660 IF e=255 THEN LET num=num-6 
5536 

8670 GO TO 8730 

8680 LET exp=a~128 

8690 LET sign=-1 

8700 IF e<128 THEN LET sign=1: L 
BT e=et128 

8710 LET mant=e/256+d/65536+c/16 
7772 16+b/4294967296 

8720 LET num=sign* 2°exp*mant 
8730 LET x$=STR$ num 
8740 RETURN 


8140" LET -x$="0"+xS— 

8150 NEXT 3 

8160 LET xd=LEN x$-id 

8170 IF id>O THEN LET x$=x$( TO 
xd)+"."+x$(xd+1 TO ) 

8180 FOR j=1 TO il-LEN x$ 

8190 LET x$=CHR$ 32+x$ 

8200 NEXT 3 

8210 RETURN 

8220 RESTORE 8250 

8230 DIM t$(19,10): FOR i=l TOL 
9: READ t$(i): NEXT i 

8240 RETURN 

8250>DATA "CAPITAL", "CLOTHING" ,” 
DENTAL", "ELECTRIC" ,"GAS" ,"GIETS" 
"GROCERIES" , "HOUSING" , "INSURANC 
EB", "LEISURE" , "LIQUOR" , "MEDICAL", 
"MISC.", "PERSONAL" ,"PHONE" , "PROP 
= TAXES", "TRANSPORT" , "VACATION" 
8260 DATA "TOTALS>>" 

8270 GO SUB 8220: LET uS="##e#ed 
.##"s OUD 127,15: POKE 23658,8: 
INPUT "Select Spreadsheet..."'"P 
=Planned A=Actuals"'"Q=Plann 
ed YTD B=Actuals YTD"; LINE i$ 
8280 LET tflag=0 

8290 PRINE #0; "CALCULATING/PRINT 
ING SPREADSHEET[ ENTER ]=STOP" 
8300 LET num0=0 

8310 LERIND ("PLANNED" AND i$="P 
")+("ACTUALS" AND i$="A")+("PLAN 
NED YTD" AND i$="Q")+("ACTUALS Y 
TD" AND i$="B") 

8320 IF i$="P" OR i$="A" THEN LP 


RINT " JAN FEB 
MAR APR MAY 
JUN JUL AUG SEP 
or Nov DEC Tv 
OTAL" 

8330 IF i$="Q" OR i$="B" THEN LP 
RINT " JAN FEB 
MAR APR MAY 
JUN JUL AUG SEP 

ocr NOV DEC" 


8340>IF i$="P" THEN LET first=50 
534: LET last=51613: REM a( ) 
8350 IF i$="Q" THEN LET first=54 
044: LET last=55123: REM t( ) 
8360 i THEN LET first=51 
614: LET last=52693: REM e( ) 
8370 IF i THEN LET first=55 
124: LET last=56203: REM u( ) 
9380 
8390 FOR i=first TO last STEP 60 
8400 LPRINE t$(cat)7: LET tot=' 
FOR m=0 TO 55 STEP 5 

8410 LET a=PEEK (itm) 


8550 IF tflag THEN RETURN 

8560 LET cat=cattl 

8570 NEXT i 

8580 LET tflag=1 

8590 IF i$="A" OR i$="B" THEN LE 
T i=57314: REN 2( ) 

8600 IF i$="P" OR i$="Q" THEN LE 
T i=53804: REM o( ) 


*Q" GR i$="B" THEN LP 
" 


LINE Notes 


8050 variable is IL 
8070 j=one to IL 


8750 LET tflag=1 

8760 LET nunO=numl+numd 

8770 LET num=nund 

8780 GO SUB 8050: GO TO 8510 
8790 REM ! CLOSE # 

9000 CLEAR : RANDOMIZE USR 100: 
SAVE "spread.BJ": LIST 


8110 the © symbol is my printers EXP (sym shf H) arcow 


8180 j=one to IL 
8230 FOR I=one to nineteen 


8300 is a zero~ any variable O would be in lower case, 


8380 LET cat=one 
8400 is zeroes 

8420 I+Mtone 

8490 variable is one 
8510 minus one 

8560 cattone 

8580 tflag=one 


8640 is just the line number with one space after 


8700 sign=one 


8720 the © is my printers EXP (sym shift H) accow 


8750 t£lag=one 


8760 the variable is NUMzero. 


LINE~ FREE CHBCK 


8600=36539 


9000=36057 


After making sure that the Check 


Sun is right, change the last 
line to suit your DOS syntax. 
Then COMPILE with TIMACHINE. 


Count the © as having a slash 


GHECK SUM to help verify your 
key-in accuracy. 

NEWED computer that has FREE 
Memory of 38652 bytes. 

Figures given are what you must 
get with PRINT FREE after the 
line number has been entered, 


Start with a 


<CLEAR> before <PRINI FREE>. 


39 


"BUDGET.B1" for Aerco FD-68 DoS 
Start line is 20. 


20 LET base=64500: IF PEEK bas 
e024 THEN OUT 244,1: CAT "Cel 
ear.bin",: CAT "Cprcode.bin", 

30 GO TO 60 

40 OUT 244,1: MOVE "budgetCY.b 
in" ,32000,25923 

60 ON ERR RESET : LET base=64 


: RANDOMIZE USR (base+2): P 
" BUDGET INPU 
y ;!'TAB 7;"1> Bud 
get [Set-Up]"! "TAB 7;"2> Budget 
"TAB 7; "3> Budget [SAV— 
"4> Budget [re-Start 
> PRINE Spreadsheet 
on Wide Printer"! "TA 
B7;"6> Disk [Menu]""'" 
=Select Option: 
130 PAUSE 0: LET k=CODE INKEYS- 
48: IF k¢l OR k>6 THEN GO TO 1 
30 
155 IF k=6 THEN OUP 244,1: CAT 


HEN GO TO 40 

190 IF k=4 AND PEEK 37166=205 T 
HEN RANDOMIZE USR (base+2): CL 
$ : LPRINT : ON ERR GO TO 60: 
RANDOMIZE USR 37166: GO TO 60 
195 IF k=5 AND PEEK 32000=205 T 
HEN RANDOMIZE USR base: CLS : 
POKE (base+4),131: LPRINI : OUT 
244,1: CAT "spreadCJ.bin",: ON 
ERR GO TO 60: RANDOMIZE USR 5 
8400: POKE 23658,0: GO TO 60 
210 GO TO 60 

220 RANDOMIZE USR (base+2): IF 
PEEK 32000<>205 THEN OUT 244,1 
: CAT "budgetGI.bin", 

230 RANDOMIZE USR 32000 
240 GO 10 60 

250 RANDOMIZE USR (base+2 
244,1: CAT "budgetCY.bin",: ON 
ERR GO TO 60: RANDOMIZE USR 3 
7166 

260 GO TO 60 

310 OUF 244,1: MOVE "BudgetBl.b 
as",20: GO TO 60 

350 RANCOMIZE USR base: CLS : I 
NPUE "Enter line width: ";1l: P 
OKE (base+4),11-1: BEEP .5,12: 
INPUT "Does printer need a line 
<b Yes - <2> No ";lfs 
THEN POKE (base+S) ,10 
360 CLS : PRINT AT 10,2;"Ready 
for Centronics printer"! "TAB 
"To resume BUDGET, <GO TO 20> 
STOP 


SEE FOOT NOTES under the Aerco 
FD-68 Disk Menu program listing. 


"Disk Menu" for Aerco FD-68 DOS 
Start line is 10 


10 INK 3: BORDER O: PAPER 0: C 


20 FOR n=0 TO 31: PRINT AT 2,n 
:#";aT 20,n7"*"s NEXT n: FOR n 
=3 TO 19: PRINT AT n,0;"*";AT n 
131;"*": NEXT nz INK 7 

30 PRINE AT 4,7;"The Disk Mana 
gec";AT 7,5;"1> Load Your Budge 
AT 9,5;"2> Load Spread Sheet 

AT 11,5;"3> EXIT Budget To BA 
sic" ;AT 12,8;"(£or printing]";A 
T 14,5;"4> Save this Budget Dat 


UPDATE July 1988 
Programming 


"Disk Menu” for Larken DOS 
Start Line is 10 


10 INK 3: BORDER 0: PAPER 0: C 


20 FOR n=0 TO 31: PRINT AT 3,n 
s"*" AT 21,n¢"*": NEXT nz FOR 1 
=3 TO 21: PRIND AT n,0;"*";aT n 
231;"*": NEXT nz INK 7 

30 PRINT AT 5,7;"The Disk Mana 

5;"1> Load Your Budge 
2> Load Spread Sheet 
"3> Load Printer Code 
"jAT 12,8;"To Print Centronics" 
AT 14,5;"4> Save this Budget’ D 


a" ;AT_16,5;"5>-Go_to Main Menu" _______ata";AT_16,5;"5>-Go-to-Main-Men— 


AT 18,5;"6> Re-Set Computer” 

40 PAUSE 0: LET aa=CODE INKEY$ 
48: IF aa<l OR aa>6 THEN GOT 
0 30 

60 OUT 244,1: IF aa=1 THEN CA 
T "budgetCy.bin",: GO TO 10 

70 IF aa=2 TEEN CAT “spreadcd 
-bin",: GO TO 10 

80 IF aa=6 THEN OUT 244,0: RA 
NDOMIZE USR 0 

90 IF aa=4 THEN MOVE "budgetC 
Y.bin” ,32000,25923: GO TO 10 

100 IF aa=5 THEN CAT "BudgetBl 
sbas", 

110 IF aa=3 THEN CLS : OUT 244 
yl: CAT "Cpreade.bin",: INPUD " 
Select: 

1> For TS-2040 -- <2> Centroni 
cs";p: IF p=l THEN RANDOMIZE U 
SR 64502: STOP 

120 IF p=2 THEN RANDOMIZE USR 
64500: INPUT "Enter Line width 
"sw: POKE 64504,(w-1): INPUT "E 
nter ""0"" for no Line Feed or 

""10"" for Line Feed "; 
£: POKE 64505,£: LPRINT ': PRIN 
T AT 10,2;"Ready to LPRINI"''TA 
B 2;"To resume BUDGET, type <RU 
ND": STOP 

130 GO TO 10 


Foolf Notes: This Disk Menu and 
the Aerco Budget Loader have a 
relocatable Aerco printer cade 
as given in Jack Dohany's 
RALOADER program. The code is 
located at 64500,867. The top 
67 bytes are reserved for VARS 
that need to be preserved from 
one Basic program to another. 
POKE the vars starting at 65300 
before a new program is loaded 
or before a new VAL program is 
Joaded. Then PEEK the vars 
back after the LOAD. 


Both this Menu and the BUDGET 
Loader have a Stand By printer 
code initialization routine 

to use when you need to put the 
Budget progran on stand-by to 
do some direct printing. 


40 


u";AT 18,5;"6> EXIT Budget Prog 
ram" 


40 PAUSE 0: LET aa=CODE INKEY$ 
748: IF aa<1 OR aa>6 THEN GOT 
45 IF aa=6 THEN RANDOMIZE USR 


50 RANDOMIZE USR 100: OPEN #4, 


PRINE #4: LOA 
D "budget . CY" CODE 

70 IF aa=2 THEN 
D "spread. GJ" CODE 

80 IF aa=3 THEN 
20 

90 IF aa=4 THEN PRINT #4: SAV 
E "budget .CY"CODE 32000,25923 
100 IF aa=5 THEN PRINT #4: LOA 


PRINE #4: LOA 


cLs : GOTO] 


120 CLS : PRINT AT 10,5;"Please 
Stand by . . .": LET base=6400 
Os PRINT #4: LOAD "Cclear.Cl"CO 
DE : PRINT #4: LOAD "prcode.Cl 
CODE : RANDOMIZE USR base: POKE 
26703,205: POKE 26704,251: POK 
& 64451,254: POKE 64457,0: POKE 
64458,0: CLS : INPUT "Line Wid 
he" POKE 64459,w-1: TNPUT 
"Printer need Line feed? 

<I> yes or <2> No ";]lf: IF 1f 
=1 THEN POKE 64460,10 

130 IF 1£=2 THEN POKE 64460,0 
140 IF 1£<1 OR 1£>2 THEN GO TO 
120 

150 LPRINT : CLS ; PRINE AT 10, 
"READY to PRINE"!'TAB 5; "When 
finished, type <RUN>.": STOP 


can 
4 
af the 
SWGFE-D 

RVACATION 


"BUDGET.B1" for Larken DOS 
Starting Line is 60. 
30 GO TO 60 


40 RANDOMIZE USR 100: SAVE "bu {* 


dget.CY"CODE 32000,25923 
60 ON ERR RESET : CLOSE #2: 
Ur 127,18: POKE 23703,0: POKE 2 
6704, BORDER 0: PAPER INK 
7: CLS : PRINT AT 4,0, 
BUDGET INPUI/OUTPUT=: 
65 REM RANDOMIZE USR 100: CLO 


° 


73-2040 Stb ses 


SANSOME IID. 


UPDATE July 1988 
Programming 


“BUDGET.B1" for the Oliger DOS 
Starting Line is 60 


10 REM ****BUDGET LOADER**** 

20 REM ** See Cclear ** LOAD / 
"Cclear"CODE 

30 GO TO 60 

40 SAVE /"budget.CY"CODE 32000 
725923 

60 ON ERR RESET : CLOSE #2: BO 
RDER 0: PAPER O: INK 


65 REM CLOSE #3 
70 PRINT '" 1> Budget [set up 


" 2> Budget [load]" 
"  3> Budget [save]" 
" 4> Budget [restart 


SB #3 
70 PRINT '" 1> Budget [set up 
80 PRINE " 2> Budget [load]" 
90 PRINT " 3> Budget [save] 
100 PRINT " 4> Budget [restart 
105 PRINT '" 5> Print Spreadsh | 
eets""" on Wide Printer" 
_110 PRINT '" 
115 PRINT *" 
120 PRINT ' 
tions=: 
130 PAUSE 0 


140 LET k$=INKEYS 

150 IF k$<"0" OR k$: 
© TO 150 

160 If k$="1" THEN GO TO 220 

170 IF k$="2" THEN ON ERR GO 
‘TO 60: GO SUB 250 

180 IF k$: AND PEEK 32000=20 
5 THEN GO TO 40 

185 IF k$="7" THEN ON ERR GO 
TO 186: RANDOMIZE USR 100: LOAD 

"taswi.Cx"CODE : RANDOMIZE USR 

64300: PRINT CHR$ 3;: PRINT US 
R 100: PRINT "help.cr" 

186 IF kS="7" THEN ON ERR RES 
ET : POKE 23607,60: PRINT #1; F 
LASH 1;"(ENTER]": PAUSE 0: GO T 
0 60 

190 IF k$="4" AND PEEK 37166=20 
5 THEN ON ERR GO TO 60: RANDO 
MIZE USR 37166 

195 IF k$="5" AND PEEK 32000=20 
5 THEN CLS : RANDOMIZE USR 100 
: LOAD “prcode.C1"CODE : POKE 2 
6703,205: POKE 26704,251: POKE 
64459, 131: POXE 64451,254: POKE 

64460,0: POKE 64456,1: POKE 64 
458,0: POKE 64457,0: PRINT #4: 
LOAD "spread. GJ"CODE : RANDOMIZ 
E USR 58400: GO TO 60 

200 IF k$="6" THEN RANDOMIZE U 
SR 100: LOAD "Menu.BI" 

210 GO TO 60 

220 RANDOMIZE USR 100: LOAD "bu 
dget.c3"CODE 

230 RANDOMIZE USR 32000 

240 GO TO 60 

250 RANDOMIZE USR 100: LOAD "bu 
dget..CY"CODE 

260 RANDOMIZE USR 37166 

270 GO TO 60 

310 RANDOMIZE USR 100: SAVE "bu 
dget.B1" LINE 60: REM ** Direc 
t SAVE of this Basic Program 

320 STOP 

350 RANDOMIZE USR 100: LOAD "pr 
code.Cl"CODE : POKE 26703,205: 
POKE 26704,251: POKE 64459,131: 

POKE 64451, 254: POKE 64460,0: 
POKE 64456,1: POKE 64458,0: POK 
E 64457,0: CLS : INPUT "Line Wi 
dth?";11: POKE 64459,11-1: LPRI 
NI: STOP : REM ** To enable Ce 
ntronics Printer. 


ABCDEFSHIORLMNOPOR 


Disk Menu for Oliger DOS 
Start Line is 10. 


10 INK 3: BORDER 0: PAPER 0: C 
Ls 

20 FOR n=O TO 31: PRIN AT 2,n 
;"*";aT 20,n;"": NEXT n: 
: PRIND AT n,0;"*";AT n,3 
NEXT nz INK 7 

30 PRINT AT 4,7;"The Disk Mana 
ger";AT 7,5;"1> Load Your Budget 
";AT 9,5;"2> Load Spread Sheet"; 
AT 11,5;"3> EXIT Budget To BASIC 
";aT 13,5;"4> Save this Budget D 
ata";AT 15,5;"5> Go to Main Menu 


40 PAUSE 0: LET aa=CODE [NKEYS 
-48: IF aa<l OR aa>6 THEN GO TO 
30 

60 IF aa=] THEN LOAD /"budget. 
cy"CODE 

70 IF aa=2 THEN LOAD /"spread. 
CI" COLE, 

80 IF aa=3 THEN CLEAR 65535: C 
LEAR 65367: LOAD /"DOSDEX MGR" 

90 IF aa=4 THEN SAVE /"budget. 
CY"CODE 32000,25923 

100 If aa=5 THEN LOAD /"BUDGET. 
BI" 

110 GO TO 10 


Foot notes 


Upon finishing with the BUDGET 
program, a selection of <3> will 
boot in the DOSDEX MGR program 
for selection of another Basic 
program to load (assuming that 
the either this same disk has 
the DOSDEX MGR progcam. If not 
then you can install a disk that 
dees. 


"> Print Spreadsh 
on Wide Printer" 

110 PRINT '* 6> Disk Menu" 

120 PRINT ' Select op 
tion: 
130 PAUSE 0 

140 LET k$=INKEYS 

150 IF k$<"0" OR k$>"6" THEN GO 


180 IF k$="3" AND PEEK 32000=20 
5 THEN GO TO 40 

190 IF k$="4" AND PEEK 37166=20 
5 THEN ON ERR GO TO 60: RANDOMIZ 
E USR 37166 

195 IF k$="5" AND PEEK 32000=20 
5 THEN CLS : LET /p=o: POKE 2332 
4,0: POKE 23323,132: LOAD /"spre 
ad.GJ"CODE : RANDOMIZE USR 58400 
+ GO TO 60 

200 IF k$="6" THEN LOAD /"Menu. 
Bl" 

210 GO TO 60 

220 LOAD /"budget . GJ"CODE 

230 RANDOMIZE USR 32000 

240 GO TO 60 

250 LOAD /"budget .CJ"CODE 

260 RANDOMIZE USR 37166 

270 GO TO 60 

310 SAVE /"budget.B1" LINE 330 
320 GO TO 60 


Foot Note: There are two code 
budget programs. One is 
budget.CJ and has no data. 
budget.cY is created (line 40) 
when you save your first data 
program, 

Selecting <4> will clear out 
the data of an existing program 
and start over. 


<GO TO 310> will SAVE a back up 
of this basic loader. 


41 


“BUDGET.B3" Alternate Loader for 
"MAX DOS" (Stacked Larken and 
Oliger Dos 


Starting Line=330 


10 REM ****BUDGET LOADER**** 

20 CLEAR 31999 

30 GO TO 60 

40 SAVE /"budget.C¥"CODE 32000 
725923 

60 ON ERR RESET : LET /p=o: CL 
OSE #2: REM ** OPTION FOR STACKE 
D Dos 

61 REM ** OUT 127,18: POKE 237 
03,0: PORE 26704,5: REM * FOR AE 
RCO CODE 

63 ON ERR RESET : BORDER 0: PA 

INK 7: CLS : PRINT aT 4,0 

“BUDGET INPUL/OUTPUD=: 


65 REM RANDOMIZE USR 100: CLOS 


EB #3 

70 PRING '" 1> Budget [set up 
}" 

80 PRINT " 2> Budget [load]" 

90 PRINT “ 3> Budget [save]" 
100 PRIN " 4> Budget [restart 
* 

105 PRINT '" 5> Print Spreadsh 
eets""" on Wide Printer" 

110 PRINT '" 6> Disk Menu" 

115 PRINT '" 7> HELP!" 

120 PRINT ''": =Select op 
tion== 


130 PAUSE 0 

140 LET k$=INKEYS 

150 IF k$<"0" GR k$>"7" THEN GO 
TO 150 


THEN GO TO 220 
2" THEN ON ERR GO TO 
60: GO SUB 250 

180 IF k$="3" AND PEEK 32000=20 
5 THEN GO TO 290 

185 IF kS: THEN ON ERR GO TO 
186: CLS : RANDOMIZE USR 100: L 
CAD "taswi.Cx"CODE : RANDOMIZE U 
SR 64300: PRINT CHRS 37: PRIND U 
SR 100: PRINT “help.Cr" 

186 IF k$="7" THEN ON ERR RESET 
: POKE 23607,60: PRINT #1; FLAS 
H 1;"[ENTER]": PAUSE 0: GO TO 60 
190 IF k$="4" AND PEEK 37166=20 
5 THEN ON ERR GO TO 60: RANDOMIZ 
E USR 37166 

195 IF k$="5" AND PEEK 32000=20 
5 THEN CLS : LET /P=O: RANDOMIZE 
USR 100: OPEN #4,"DD": POXE 233 
23,132: PRINT #4: LOAD “spread.C 
J"CODE :; RANDOMIZE USR 58400: GO 
TO 60: REM ** For Stacked DOS 
196 REM for Aerco code~ IF k$=" 
5" AND PEEK 32000=205 THEN CLS : 
RANDOMIZE USR 100: OPEN #4,"DD" 
+ LOAD "preode.C2"CODE : POKE 26 
703,5: POKE 26704,251: POKE 6425 
9,131: PRINT #4: LOAD "spread.CJ 
"QODE : RANDOMIZE USR 58400: GO 
TO 60 

200 IF k$="6" THEN RANDOMIZE US 
R 100: LOAD "Menu.B1" 42 

Cont 


” syntax, 


UPDATE July 1988 


BUDGET. B3 Programming 


An Interesting Productivity Program for MAX DOS 


Are you ready for this? Well, some day you will be. This 
is a Budget Loader program to be used with "MAX DOS", Larken and 
Oliger DOS "stacked". Tt works like a charm at UPDATE. Now 
this will repeat some of the information contained in the 
article "MAX DOS", but will serve as an example of a useful 
program. The senario is: Larken LK cartridge in the Dock port 
and the full Oliger DOS in place. RGB is via the Oliger 
hardware. Printer support is via the Oliger SAFE DOS. LET/p=t 
enables the TS-2040 printer, or LET/p=o enables the Centronics 
printer. Maximum line width is controlled via POKE 23323,width. 


Note line 330, which is the Auto Run Line. Both Oliger and 
Larken DOS are initialized in this line. <LET/d=1> assigns disk 
#1 to the Oliger DOS. <PRINT #4: GO TO 0> assigns disk zero to 
the Larken DOS. From then on, the disk syntax used results in 


—-automa tie—switching—of-the-disk-drives_as-needed.—-This-allows. 


1.6 mgbts of disk space under direct program control (two 80 
track drives). Other combos of drives are acceptable. As 
programmed, disk "PROGRAM" SAVE and LOADs are to the LARKEN disk 
in disk zero, and Disk "DATA" saves and LOADS are to the Oliger 
Disk in drive #1. But this can easily be changed as desired. 
The convertable line numbers are: 40, 185, 196, 200, 220, 250, 
310, and 335. All you need do is change the LOAD SAVE syntax 
and the right drive will be auto selected. 


Note lines 40 and 250, which uses the Oliger SAVE and LOAD 
of the BUDGET DATA. When these lines execute, the drive is 
switched to drive #1. All other LOADS and SAVES use LARKEN DOS 
which switches to drive #0. A gocd operating practice 
with MAX DOS is to use one DOS format for PROGRAMS and the other 
for DATA. The drives are switched automatically. MAX DOS 
allows the user to FORMAT Oliger disks directly or to load the 
Larken tool kit disk to FORMAT Larken Disks. Disks may be 
prepared for other users who operate with either of the two 
single DOS, Larken or Oliger. 


There are two separate operating protocols. Normally one 
would think of the "stacked DOS" as mostly having to do with 
operations to amd from the disk drive. Actually the most 
significant advantages of MAX DOS are the "cumulative" Extra 
Basic functions which can be used without regard to which disk 
format is being used. During operation one does not pay any 
attention to “which disk is being used", as this does not 
matter. One just uses the programming syntax to do the function 
needed. In this program, menu option <7> HELP, results in the 
exercise of a Larken function which brings up a “disk file to 
screen" for viewing. Tt is the "taswi.Cx"CODE file, which 
happens to be a TASWIDE 64 Colum "Help File", which is printed 
to screen. 


Other Extra Basic functions of either DOS are "at home" in 
the MAX DOS environment. Programs that contain "mixed" DOS 
syntax are acceptable for whichever disk format will be used for 
SAVE or LOAD. The Oliger "Fast FOR counter" is at home ina 
Larken Disk program, and the Oliger Printer Driver works as well 
in a Larken formt as it does in a Oliger Format. A single 
drive can be used as easily as one normally does with either 
DOS. Program prompting to "install Larken Disk or Oliger Disk" 
before a disk command would be appropriate for single drive 
systems, but not necessary with a two drive system. 


Since the two EPROMS of Oliger and LARKEN DOS operate in 
different expansion banks, the extra basic functions that they 
contain can be expanded. These groups of new functions are 
additions to the TS-2068 ROM, but are different in concept, ie, 
they are "whole routines of productive functions", rather than 
"loops to support the TS-2068 Basic". The extra basic functions 
add substantial computing power to the TS-2068. 


210 Go TO 60 

220 RANDOMIZE USR 100: LOAD "bu 
dget.CJ"CODE 

230 RANDOMIZE USR 32000 

240 GO TO 60 

250 LOAD /"budget .C¥"CODE 

260 RANDOMIZE USR 37166 

270 GO TO 60 

280 STOP 

290 GO TO 40 

300 GO TO 60 

310 RANDOMIZE USR 100: SAVE "BU 
DGET.B1" LINE 330 

320 STOP 

330 LET /p=o: LET /d=1: RANDOMI 
ZE USR 100: OPEN #4,"dd' PRINT 
#4: GO TO 0: REM ** Initializes 
Dual DOS, Larken disk in drive 0 
, Oliger in drive 1, TS-2040 pri 
nting 

331 REM ** RANDOMIZE USR 100: L 

—OAD-"preode.€2"CODE-+-REM aerco- 

preode 

333 REM RANDOMIZE USR 100: OPEN 
8B, "Ip" 

335 RANDOMIZE USR 100: LOAD "sp 
read. CI"CODE 

340 POKE 23658 ,0 

350 GO TO 10 

400 CLEAR 29000: RANDOMIZE USR 
102: GO TO 330 

SL 4a 


sr 


100 PRINT_".4>_Budget_{restart— 


Alternate BUDGET.B1( LAdaew) 

By Bob Mitchell. Includes the 
Taswide Help File option, and a 
different Aerco prcode handler. 


10 REM ****BUDGET LOADER**** 

20 CLEAR 31999 

30 GO TO 60 

40 RANDOMIZE USR 100: SAVE "bu 
dget.CY"CODE 32000,25923 

60 ON ERR RESET : CLOSE #2: QU 
T 127,18: POKE 23703,0: POKE 267 
04,5:: BORDER 0: PAPER 0: INK 7: 

CLS : PRINT AT 4, 
ET INPUL/OUIPUT=: 

65 REM RANDOMIZE USR 100: CLOS 


E #3 
70 PRINT '" 1> Budget [set up 
}" : 
80 PRINE " 2> Bixiget [load]" 
90 PRINT " 3> Budget [save]" 


ND '" 5> Print Spreadsh 


on Wide Printer" 
6> Disk Menu" 
7> HELP!" 


110 PRINT '" 
115 PRINT 
120 PRINT 
tion 
130 PAUSE 0 

140 LET k$=INKEYS 

150 IF k$<"0" CR k$>"7" THEN GO 
TO 150 

160 IF k$="1" THEN GO TO 220 
170 IF k$="2" THEN ON ERR GO TO 
60: GO SUB 250 

180 IF k$="3" AND PEEK 32000=20 
5 THEN GO TO 290 

185 IF k$="7" THEN ON ERR GO TO 


186: CLS : RANDOMIZE USR 100: L 
OAD "taswi.Cx"CODE : RANDOMIZE U 
SR 64300: PRINT CHRS$ 3;: PRINT U 
SR 100: PRINT "help.cr" 

186 IF k$="7" THEN ON ERR RESET 
: POKE 23607,60: PRINT #1; FLAS 
H 1;"(ENTER]": PAUSE 0: GO TO 60 
190 IF k$="4" AND PEEK 37166=20 
5 THEN ON ERR GO TO 60: RANDONIZ 
E USR 37166 

195 IF k$="5" AND PEEK 32000=20 
5 THEN CLS : RANDOMIZE USR 100: 
LOAD “prcode.Cl"CODE : POKE 2670 
3,5: PORE 26704,251: POKE 64259, 
131: PRIND #4: LOAD "spread.cJ"C 
ODE : RANDOMIZE USR 58400: GO TO 
60 

200 IF k$="6" THEN RANDOMIZE US 
R 100: LOAD "Menu.B1" 

210 GO TO 60 

220 RANDOMIZE USR 100: LOAD "bi 


230 RANDOMIZE USR 32000 

240 GO TO 60 

250 RANDOMIZE USR 100: LOAD "bu 
dget.. cy"CODE 

260 RANDOMIZE USR 37166 

270 GO TO 60 

280 STOP 

290 GO TO 40 

300 GO TO 60 

310 RANDOMIZE USR 100: SAVE "BU 
DGET.B1" LINE 330 

320 STOP 

330 RANDOMIZE USR 100: LOAD “pr 
code.C1"CODE : REM aerco preode 
333 REM RANDOMIZE USR 100: OPEN 
#3,"1p" 

335 RANDOMIZE USR 100: LOAD "sp 
read. CJ"CODE 

340 POKE 23658,0 

350 GO TO 10 

400 CLEAR 29000: RANDOMIZE USR 
102: GO TO 330 


The Aerco precede, and possible Problems 


There are at least four versions of the Aerco printer code, 


and each of these may have three variations of configurations 
set up during the user's adaptation to his own printer 
equipment. The Budget program LOADER, and the two programs 
“MS-TAS" and "BRIEF" may not print right with your equipment and 
with the Aerco preode programming (POKES) given in the program 
listings. But try it anyway. My Epson compatable printer and 
my Queme compatabke Daisy printer both work well with the code 
used in the Budget, INIT, and BRIEF programs. Hopefully, yours 
will also. If not, then use the code tha you normally use with 
the these three programs, and change the POKES in the listings 
to that which you normlly use successfully with your other 


rograms. 
sis UPDATE July 1988 


4 3 Programming 


8970 REM 
** TS-2068 UPDATE ** 
~MS-TAS- 


A utility to PEEK and PRINT 
TTASWORD and MSCRIPT Code Data 
files from Disk or Cassette. 


* Does not require the soft- 
ware to be loaded. 


8972 LET x=9610: LET y=9600: CLO 
SE #2: BORDER PAPER 0: INK 7: 
CLS : PRINT '''TAB 8;"TS-2068 U 
PDATE"'''"* Utility to PEEK and 

Print out MSCRIPT and TASWORD Da 
ta Files from Disk."''"* Does n 
ot require Word Proc to be loade 
d."''"™* DOES Require;"''"l. Aerc 


UPDATE July 1988 
MS-TAS Documentation Programming 


A Tutor in Basic Programming Techniques 


This is one of them utilities designed for a job at hand. 
Friends used to send me letters on cassette or disk and I was 
kinda like the poor guy who coulcn't read writing. I'd have to 
fake it ard call them to discuss what they'd said, because the 
data file was in Code files. Mostly these files were either 
Mscript or Tasword files. Both are good word procesors, but 
that didn't matter as I dont use either and it was Greek to me! 
I use Smart Text which saves data in Character arrays. 


So, that sets the senario. Then when Bob Mitchell sent me 
10 pages of Tasword code files, that did it! "MS-TAS" was the 
result. Now take time out to look at Bob's documentation in 
this issue. All of it was printed out with this utility MS-TAS, 
without a word processor. ‘The print product was gocd enough 
that all I had to do Was run it through the copier. "MS-TAS" 
grabs Code files out of Disk (or Cassette) and prints them to 
paper. This particular program works with LARKEN DOS, OLIGER 


______--9-er-Oliger Printer Int fe —to-b—----BOS; —AERCO--FD-68, —or — CASSETTE. _~ And—it—works-with either —————_ 


e installed."''"2, Centronics Pr 
inter -ON~ READY"'''"SET BQUIPME 
NI, THEN ENTER": PAUSE 0: CLS 
8974 PRINT AT 10,2;"Set Printer 
ON and READY"'TAB 2;"Then [ENTER 
J": PAUSE 0: CLS 

8976 PRINT AT 10,12;"Selec 
TAB 5;"<1> TS-2040 Printer 
5;"<2> Centronics Printer": GO 
SUB y: LET pr=z: IF pr=] THEN GO 
TO 8980 

8978 CLS : PRINT AT 10,1;"Does P 
rinter need a Line Feed?: 
4;"<1> Yes ~ or - <2> No“: GS 
UB y: CLS : LET lf=z 

8980 PRIN AT 10,2;"Input DOS or 
Cassette"! 'TAB 5;"<1> Cassette” 
''TAB 5;"<2> Oliger DOS"' "TAB 5; 
"<3> Larken DOS"''TAB 5;"<4> Aer 
co FD-68 DOS": GO SUB x: LET tm= 
z: IF z<1 OR z>4 THEN GO TO 8980 
8982 GO SUB (tm=1)*9200+(tm=2)*9 
360+ ( tm=3)*9310+( tm=4)*9300 

8984 IF tm=1 AND pr=1 THEN GO TO 
9000 

8996 GO SUB (tm=2)*9325+(tm=3)*9 
330+ (tm=4)*9320 

9000 LET Lc=l: INPUT "Input Pile 
Starting Address ";sa: INPUT "I 
nput File Byte length “;bL: INPU 

T "Format Line Length? ";LL 

9002 IF tm=2 THEN POKE 23323,LL 
9004 IF tm>2 THEN POKE 64458,LL- 
1 

9006 CLS : OPEN #2,"p' 
TO satbL STEP LL 
9008 FOR y=n TO n+LL-1 

9010 LET c=PEEK y 

9012 IF c=13 THEN PRINT ' 

9014 PRINT CHR$ c; 

9016 NEXT y 

9018 IF tm>2 THEN PRINT 

9020 LET Le=Le+l: IF Lo>55 THEN 
PRINT : CLOSE #2: LET Le=1: OUT 
127,12: BEEP PI/oj,ol: CLS : PRI 
NI AT 0j,0d;"Adjust Page, then E 


FOR n=sa 


NTER": BEEP PI/Oj,ol: PAUSE 0: C 
LS : OPEN #2,"p" 
3030 NEXT n 

oo cear 4k 


CENTRONICS or TS-2040 printer. 


I'll now donate MS-TAS to public domain so that the Clubs 
can have at it. (Would be nice if Credits were mentioned). Now 
since MS-TAS will work with WHATEVER configuration one has, we 
will use MS-TAS as this issue's Programming Tutor. You Lads and 
Lassies who dont need no tutoring can just start keying in and 
skip the prose. 


MS-TAS looks like a lot of programming, but it trims down 
to a few lines when the extra stuff for other Disk Systems and 
Cassette is eliminated. The plan is to use menus to make you 
create variables to pin down your equipment types (artificial 
intelligence). Then Sub Routines are used for Cassette, for 
Larken Disk, for Oliger Disk, for Aerco FD-68 Disk, for 
Centronics Printer, or for TS-2040 printer. 


Once your equipment is identified, then a disk catalog will 
be given. A prompt for INPUT of a CODE FILE NAME will be 
presented at the bottom of the Catalog. Then, while the cat is 
still visable, other prompts ask for Code Start address, and 
byte length. Any "friend" who sends you Code data will tell you 
these two essential bits of information. But if using the 
Oliger V2-52, the info will be on screen, The last prompt will 
be for LINE LENGTH for printing. The disk Code File will then 
LOAD, and begin printing. If the line length input isn't right, 
the print out wont lock so good, and you'll have to stop and 
start over with the right line length that you figured out fron 
the wasted page. 


If you BREAK during printing, you'll need to <<CLOSE# 2>>, 
because if you dont, any PRINT or LIST will print to paper 
instead of the screen. Since all variables are identified 
within the program lines, you can repeatedly use RUN to start 
the program. The program remains in memory while the Code files 
are printing, so you can print out one code file after another 
until everything has been printed. Now thats the way the 
program operates. We will now investigate the programming. 


8972 and 8974 sets the vars used for sub-routine <GO TO> or 
<GO SUB>, then the screen colors, then gives information. 


8976 begins the artificial intelligence gathering by 
assigning var “pr” to the type of printer in use. pr=l for 
TS-2040 or pr=2 for Centronics. 


8978 gathers more intelligence and assigns var "lf". lf=1 
if your printer needs a line feed, else 1f=2. Might mention Che 
<GO SUB y>. "y" was set to =9600 in line 8972. Look at line y 
(9600). This is a INKEY$ routine which waits for a key to be 
touched and then assigns that key to variable "z". Note the 
"-48" which makes z=the numbered key struck. AND, there isa 


9035>PRINE : CLOSE 42 

9040 PRINT AL 10,6;"<1> for Next 
File"! 'TAB 6;"<2> To QUIT": INP 
UL "Choice?";a: IF a<l OR a>2 TH 
EN GO TO 9040 

9045 IF a=2 THEN STOP 

9050 GO TO 8996 

9200 PRINT AT 10,2;"Advance Tape 
to Index spot,"""TAB 2; "Then [E 
NTER]": PAUSE 0: CLS : PRINT AT 
15,6;"CODE LOADING": CLS : RETUR 


N 

9300 OUT 244,1: CAT "preode.bin" 
1: GO SUB 9350: RETURN 

9310 RANDOMIZE USR 100: OPEN #4, 
"dd": PRINT #4: LOAD "prcode.Cl" 
CODE : GO SUB 9340: GO SUB 9350: 
RETURN 

9320 OUT 244,1: CAT "" 

9370: CAT _"z$",: RETURN __ 

9325 CAT : GO SUB 9370: LOAD /z$ 
CODE : RETURN 

9330 RANDOMIZE USR LOO: OPEN #4, 
"da": PRINT #4: CAT "",: GO SUB 
9370: LOAD z$CODE : RETURN 
9340 INPUT "Input Line width 
w: RETURN 

9350 POKE 23703,205: POCKE 23704, 
251: POKE 64451,254; POKE 64456, 
1: POKE 64457,0: POKE 64459,Lw-1 
: POKE 64460,0: POKE 64458,(10 A 
ND L£>1)+(0 AND LE<2): LPRINT : 
RETURN 

9360 LET /p=o: GO SUB 9340: POKE 
23323,Lw: POKE 23324,(0 AND Lf> 
1)#(10 AND 1£¢2): LPRINT : RETUR 
N 

9370 INPUL "ENTER TITLE of CODE 
to LOAD [everything between 
Quotes] “;2$3 RETURN 

9600 PAUSE 0: LET z=CODE INKEY$- 
48: IF 2<1 OR z>2 THEN GO TO 960 


0 

9602 RETURN 

9610: PAUSE 0: LET z=CODE INKEYS 
48: RETURN 


-Ms-TAS- 
Abbreviated for Oliger DOS 


8990 CLOSE #2: BORDER 0: PAPER 0 
: INK 7: CLS ; PRINT '''TAB 8;"T 
$-2068 UP-DATE"'''"* Utility to 
PEEX and Print out MSCRIPT and T 
ASWORD Data Files from Disk."'" 
"* Does not require Word Proc to 
be loaded."''"* DOES Require;"' 
'™], Aerco or Oliger Printer int 
fe to be installed.""''"2. Cent 
ronics Printer -ON~ READY"'''"SE 
T EQUIPMENT, THEN ENTER": PAUSE 
QO: CLS 
£ 


UPDATE July 1988 
Programming 


________actually four IF THEN conditionals. 1'] 


45 


trap here which refuses to accept any key except "1" or "2". 
Also note the RETURN at line 9602. Subroutines such as this one 
<<GO SUB y>> are used repeatedly fron any line in a program, 
thus saving many program lines. 


8980 gathers some more intelligence, this time "what kind 
of DOS?" Variable "tm" is set accordingly. Example- if Oliger 
Disk then tm=2. 


Now the "program knows" everything about your TS-2068 
system! The variables are set so that the right sub-routines 
can be called for Oliger Disk, Larken Disk, Aerco FD, or 
Cassette. And for Centronics or TS-2040, And for giving or not 
giving a line feed. All of that only took a few seconds and 
we're now ready for some action. 

8982 Here's the first action. We use BOOLEAN logic to 
determine which GO SUB routine 
"tm" is the variable’ set back at line 8980. 


to use to CAT the directory. 
The logic is 


you can visualize the others. <GO SUB 
tm=1 THEN GO SUB 9200>. Next, IF tm=2 THEN GO SUB 9360, 


Lets look at 9360, That is the Oliger DOS syntax to 
initialize the Centronics printer. Then there a <GO SUB 9340> 
which is to INPUT line width. This same subroutine (9340) is 
used with whichever DOS elected. After this we are back at 
9360), the line width is POKED. The LPRINI is to return the 
printer carriage. Then we RETURN to line 8984. 

8994 diverts to line 9000 "if using cassette and TS-2040" 

8996 is another BOOLEAN logic having three possible routes 
for the GO SUB. We will take one route. If tm=3 then Larken 
DOS has been elected back at line 8980, so the <GO SUB 9330> 
will execute. At line 9330 we see the Larken syntax for CAT. 
The Catalog is put onscreen. Then there isa <GO SUB 9370>. 
Follow that and we find a dual use prompt to INPUT the "title of 
the Code program to load". Then its back to 9330 again where 
the Larken LOAD is accomplished. Now we have the code file that 
we want to print out loaded. The RETURN puts us back to line 
9000. 


9000 At this time the Catalog is still on screen, The Code 
file has been loaded. The program asks for INPUT of "starting 
address" and then "byte Length" of the code file. Any "friend" 
who sends text in code will tell us that. But if using the 
Oliger catalog, it will show this information. Next, we need to 
INPUT the Format line length. Guess at 64 if you dont know. 


9002 here we poke the line length to the Oliger control 
address, and at line 9004 we poke the line length-one to the 
Aerco prcode control address. 


9006 here we <OPEN# 2,"p"> to send PRINT to the printer 
instead of to the screen. Then we start the counter "n" to 
count from "Code Start address" to "satbyte length", in STEPs of 


the line length. 


9008 Now we start counter "y" to count from "n" to the end 
of the line which will be "n+tll-1". 


9010 here we PEEK the code file at the "y" address, and 
assign the Code of the peeked character to var "c". 


9012 mscript uses ENTER to skip a line. ENTER is code 13. 
So here we cause a line feed each time code 13 is peeked from 


the code file. 

9014 here the PEEKED character is printed, one at a time, 
as the y counter counts. Note the ";" which avoids a carriage 
return and keeps the next print position on the same line. 


9016 next y gets the next peeked character until y counts 


UPDATE July 1988 
Programming 


9000 LET /p=o: POKE 23324,0: LET 
lo=1: LPRINT : CAT : INPUT "Inp 

ut Disk File Name";z$: INPUT "In 

put File Starting Address";sa: I 

NPUT "Input File Byte Length" ;bl 

3 INPUL "Format Line Length";1l: 
POKE 23323,11: LOAD /z$CODE : 0 

PEN #2,"P": FOR n=sa TO satbl ST 

EP 1l 

9005 FOR y=n TO n+l1-1 

9010 LET c=PEEK y 

9015 IF c=13 THEN PRINT ' 

9020 PRINT CHRS c; 

9025 NEXT y: LET le=ictl: IF lo> 

55 THEN PRINT : CLOSE #2: LET le 

=1: OUT 127,12: BEEP 1,20: CLS : 
PRIND "Adjust Page, THEN ENTER" 
: PAUSE 0: OPEN #2,"P" 

9030-NEXT- aS _ -—— 


up to the line length, upon which time line 9018 will execute. 

9018 if tm>2 then we are using the Aerco printer code for 

rken or Aerco DOS. The PRINF is to account for a built in 
glitch in the Aerco prcode. 


9020 var 1c is the line counter. Ic is incremented. If 1c 
reaches 56 then a page end is directed. CLOSE# 2 allows a 
prompt to be put on screen. Line count is put back to one, <OUT 
127,12> causes the printer to feed the form to the next page 
beginning. The prompt is give to adjust the page (single sheet 
printer). | Then when ENTER is touched <OPEN# 2,"p" puts PRINT 
back to the printer. 


9030 next n gets the next line of characters PEEKED from 
the Code file. 


9035 will only execute after all of the characters in the 
code file has been peeked and printed. We're finished. So we 
‘CLOSE# 2, and give options on screen, 


9035 CLOSE #2 

9040 PRINT ''"<1> For next file" 
""<2> To Quit": INPUT "Choice? 
"ja: IF a¢l OR a>2 THEN GO TO 90 
40 

9045 IF a=2 THEN STOP 

9050 GO TO 9000 


"INIT.BAS" for Aerco FD-68 DOS 


9900 INK 7: PAPER 0: BORDER 0: C 
LS : LET base=6450( 
rINT ( (base~1)/256 
,(base~PEEK 2373 1* 256-1 
44,1: CAT "Cclear.bin",: CAT "C 
proode.BIN",: CLS 

9910 CLS : PRINT AT 3,5;"Printer 
Status is: 
9920 PRIN TAB 2;"Printer in use 
is: ";: IF PEEK (base+803)>2 T 

HEN PRINT "NOT SEI" 

9922 IF PEEK (base+803)=1 THEN 
PRINT "TS-2040" 

9924 IF PEEK (base+803)=0 THEN 
PRINT "Centronics" 

9926 PRIND ''TAB 2;"Line Width i 
s: ";PEEK (base+4)+1 

''TAB 2;"Line Feed Sw 

: IF PEEK (baset5)=1 
O THEN PRINT "~ON-" 

9931 IF PEEK (base+5)=0 THEN PR 
INT "-OFF-' 

9933 PRINC ''TAB 5;"Your Choice? 
“ TAB 5;"1> RESET PARAMETERS"! 
'TAB 5;"2> Leave AS IS": INPUT 
"Choice? ";b: IF b<l CR b>2 THE 
N GO TO 9933 

9934 IF b=2 AND PEEK (base+803)= 
1 THEN RANDOMIZE USR (base+2): 
GO TO 9995 

9935 IF b=2 AND PEEK (base+803)= 
O THEN RANDOMIZE USR base: GO 

TO 9995 

9936 CLS : PRINT AT 10,2;"SELECT 
:"" "TAB 2;"<1> Centronics, or"! 
"TAB 2;"<2> TS-204 INPUT a: 
LET asa~l: IF a>l THEN GO TO 9 
937 


9050 if we elected to get the next file, the whole process 
starts over, but without the intel ligence gathering. The 
Catalog is gotten to load in the next code file to print. 


8982 somehow I skipped part of the action of this line for 
the Aerco FD-68 and Larken DOS. If either of these are in use, 
then the Aerco preode is needed for Centronics printing. If 
"tm=3" (Larken DOS) then the GO SUB is to line 9310 to LOAD and 
initialize the Aerco preode. But if the Aerco FD-68 is in use, 
the GO SUB is to line 9300 to load and initialize the Aerco 
proode. If the Oliger DOS is in use there is no need to loada 
code table, as the printer code is contained in the SAFE EPROM. 


While printing, you may BREAK and stop the printing. When 
you do that do a <CLOSE# 2> in order to re-direct PRINT to the 
screen. This will be when you elect a line length that is 
different from that formatted by the author of the Code data. 
You can determine the correct line length to input by looking at 
the aborted print out. Then just type <RUN ENTER>. Print out 
is fairly fast, as fast as my daisy wheel printer can print. 
But it wont be as fast as a dot matrix printer can print in the 
draft (fast) mode. 

ae 


9938 POKE (base+803),a: IF a=l T 
HEN RANDOMIZE USR (base+2): GO 
TO 9995 

9942 CLS : PRINT AT 10,0;"Does P 
rinter need a LINE FEED with 
each Carriage Return?"'''"<1> ¥ 
es ~ QR - <2> NO" 

9943 PAUSE 0: LET a=(CODE INKEYS 
-49): IF a<O0 OR a>1 THEN GO TO 
9943 

9944 POKE (base+5),(NOT a)*10: P 
OKE (base+805) , (NOT a+10) 

9960 CLS : PRINT AT 10,0;") 
sired Printer line length: 
PUT “Input line length: ";1l: I 
F 11>255 THEN GO TO 9960 

9964 POKE (base+4),l1-1: POKE (b 
ase+804) ,11-1 

9968 CLS : GO TO 9910 

9995 CLS : PRINT "Copy these imp 
ortant notes:"'"'"1, Always init 
ialize the var ‘base"" in 
your programs- ie, <LET base 


=64500>."''"2, The Prcode does 
not work until it is TUR 
NED ON, by: <RANDOMIZE USR 
base>. This is for Centro 


46 


nics Printers."''"IT should be 
TURNED ON before doing any PO 
KES."''"3, For TS-2040 use, <RA 
NDOMIZE USR, (base+2)."''"4 
. There are 64 bytes ABOVE this 
Code, (base+804 to 867) that 
can be used for hiding Vars 
that need to be carried fo 
rth to a new BASIC program."' 
'"The UDG area 65368-65535 is 1 
eftintact."''"5. To turn ON lin 
e feed, <POKE (base+5) , 10>" 
"6. To Turn OFF LINE FEED, <P 
OKE {base+5),0" 
9996 PRINT ''"7. To set printer 
Width, <POKE (base+4) 
763> for 64 chr lines. (width 
minus 1)"''"g, To TURN ON prin 
ter code, <RANDOMIZE USR 
base>"''"9, To Turn OFF printe 
x code, <RANDOMIZE USR (b 
ase+2) > ie, to use TS-20 
40 printer"''"10, This code is 


saved at 64500, 867. You ma 
y use the RALOADER pg 
m (Jack Dohany) to RE-LOCA 


TE the code"''"ENTER when Ready 


Peet he Page 


9997 PAUSE 0: CLS : PRINT AT 6,0 
?"The Printer driver code IS no 
w initialized."''"NEXT, a CAT 
will be done with a prompt t 
o load a program."''"During ope 
ration, if the code is overw 
itten, you may re-load this pro 
gram to re-set it into memory. 
"t "ENTER WHEN ready. PAUSE 0 
3 CLS 

9998 IF a$<>"" THEN OUT 244,1: 
car "",: INPUT "Enter a Title t 
© LOAD (all bet- ween quotes)"; 
a$: CAT "aS", 

9999 DELETE 9900, 


www 


"INIT", Larken DOS, Aerco prcode 


9997 CLEAR 64455: LET PRINTORG=6 
4461: POKE 26704,INC (PRINECRG/ 
256): POKE 26703 ,PRINDORG-(INT 
(PRINTORG/256) )*256: POKE 64456 
,l: POKE 64458,0: POKE 64457,0: 
POKE 64459,79: BORDER 0: PAPER 
0: INK 7: CLS : RANDOMIZE USR 
100: OPEN #4,"dd": PRINT #4: LO 
AD "proode.Cl"CODE 64456, 1111: 
CLS : BEEP PI/PI,PI*PI: INPUT " 
INPUT LINE WIDTH LIMIT" ;Lws POK 
E 64459,Lw-1: BEEP PI/PI ,PI*PI: 
“Install PROGRAM 
DISK, ENTER": PAUSE 0: CLS : R 
ANDOMIZE USR 100: OPEN #4," = 
PRING #4: CAT "",: INPUT 
t Title of Basic Program, ""[ 
All Between Quotes]"" "za$ 

9998 IF a$<>"" THEN PRINT #4: L 


OAD a$ 
9999 DELETE 9997, 
me 


"INIT" for Oliger [OS 


9980 CLEAR 65535: CLEAR 65367: B 
ORDER 0: PAPER 0: INK 7: CLS 
9982 INK 5: FOR n=0 TO 31: PRINT 
AT 6,n;"*";AT 16,n;"*": NEXT ns 
INK 7: PRINT AT 9,7;"PRINTER SE 
T-UP";AT 12,7; FLASH 1;"TYPE of 
PRINPER": INPUT "<1> Centronics, 
or <2> TS-2040";pr 
9988 IF pr=2 THEN LET /p=t: GOT 
0 9994 
9990 LET /p=o: PRIND AT 12,7; FL 
ASH 1;"SET LINE LENGTH": INPUT " 
Line Length? ";ll: POKE 23323,11 
= PRINT AT 12,7;"Printer Need Li 
ne Feed?": INPUT "INPUT: <l> Yes 
1f: POKE 23324,(10 
): CLS 
'DOSDEX MGR" 


9994 FLASH 0: LOAD /' 


Tn — 


UPDATE July 1988 
Programming 


Utilities "INIT" and "Cclear Code" 


"INIT" utilities for the three Disk 


Operating Systems are slightly different. Each 
listing may be used to pick up another little twist 


for another DOS. 


The Larken INIT uses the prcode as 


is supplied by Aerco on cassette for the Aerco 


printer 


interface. 


INIT for the Aerco FD-68 DOS 


uses the prcode as supplied on disk by Aerco and 
modified to be re-locatable by Jack Dohany in his 


program RALOADER. 
RALOADER call or write Jack. 


For the latest improvements in 
His address appears in 


the January UPDATE under "TS-2068 Suppliers". Both 


"TNTT" 


47. 


and "Cclear Code" 
issue's editorial pages. 


are explained in this 


SOFTWARE REVIEW 
BY Tex Faucette 


MONEY MACHINE II (T/S 2068) 
ABBA Software Productions 


Does Vanna know about Banna? And in these 
days of intensive search for true Artificial 
Intelligence there arises an even more 
important question: Is Banna aware of Vanna? 


Stay tuned for the next exciting episode of 
this digital drama! 


Vanna stars in a letter-turning role on what 
is probably the most popular game show on 
todays boob-tube. While viewing times may be 
different for the various "market areas", a 
few of us lucky ones may even be able to 
observe this shapely lady twice daily! 


For those unfortunate ones who are able to 
observe Vanna infrequently or not at all, 
but are nevertheless equipped with a 1/8 
2068, there remains the option of MONEY 
MACHINE II, This option not only permits 
discretionary observation of Miss Banna 
Brite (as shapely an assembly of pixels as 
one could wish for), but also permits one to 
compete in the actual game! Winnings are of 
course inaginary, but with Banna turning the 
letters, who cares? 


MONEY MACHINE II has perforned flawlessly in 
several critical tests including exposure +o 
unsupervised grandkids and their cronies. 
If there is a tougher test for 2068 software 
it has eecaped my attention. Full set of 
instructions for playing the game are 
included. Auxillary tapes containing 
additional word puzzles are available, also 
a "Master Puzzle Maker" program for 
do-it-yourself enhancements. 


MONEY MACHINE IIT is available on casette 
from Herb Bowers, Sr., 2588 Woodshire 
Circle, Chesapeake, VA 23323. Current price 
is listed as $12.00 (US), a bargain you 
shouldn't miss. 


"PEEK VARS" Utility 


9000 REM ** PEEK VARS ** 
9002 BORDER 0: PAPER 0: INK 7: C 


Ls 

9004 PRINT "The BASIC Program Le 
ngth is "(PEEK 23627+256*PE 
EK 23628-1)-(PEEK 23635+256* PEEK 
23636) ;" Bytes"'' 

9006 PRINT "Systems Variables:"' 
’ 


9008 PRINT "ERR SP=";PEEK 23613+ 
256*PEEK 23614'"LIST SP=";PEEK 2 
3615+256*PEEK 23616'"NEWPPC=";PE 
EK 23618+256*PEEK 2369'"NSPPC="; 
PEEK 23620'"VARS=";PEEK 23627+25 
6*PEEK 23628'"PROG=";PEEK 23635+ 
256*PEEK 23636'"E LINE=";PEEK 23 
__6414256*PEEK 23642 
9010 PRINT "WORKSP=";PEEK 23649+ 
256*PEEK 23650'"SIKBOT=";PEEK 23 
651+256*PEEK 23652'"STKEND=";PEE 
K 23653+256*PEEK 23654'"S TOP="; 
PEEK 23660+256*PEEK 23661'"UDG=" 
;PEEK 23675+256*PEEK 23676' "MEMB 
OT=";PEEK 23698+256*PEEK 23699 
9018 PRINT “RAMTOP=";PEEK 23730+ 
256*PEEK 23731'"P-RAMI=";PEEK 23 
732+256*PEEK 23733'"MSTBOI=";PEE 
K 23744+256*PEEK 23745 
9025 PRINT ''"For a VARS area Pr 
int out, Key <CONT ENTER>": 
STOP: 
9035 FOR n=(PEEK 23627+256*PEEK 
23628) TO (PEEK 23641+256*PEEK 2 
3642-1) 
9040 PRINT n;"=";PEEK n: NEXT n 
9050 STOP. 


news Panic WP ~~ as asqag TH Epo 


Slide Swe 


Cempon ey? 
Side & 
obi gEh GFK 
Ran 


See Tex 


ia 
Januae 
Up-DATE 


UPDATE July 1988 
Programming 


“Addendum To AaTiclE /1 


Janangy Up DATE = 
“Dock BANK MEMoky , 2OC ENTS 


The "PEEK VARS” Utility 


The PEEK VARS utility is designed to be MERGED to a Basic 
program either under construction, or one that is being 
modi fied. Use it as a "dangling sub-routine" to be consulted 
when facts about the System Variables are needed. <<GO TO 
g000>> gets a Screen print of the System Variables that may be 
needed for program analysis. Then after the System Vars are 
known, <<QONT ENTER>> screen prints the whole Variable Storage 
are of memory, disassembled by memory address and character code 
(in decimal). 


Type <<CLEAR>> before SAVING the utility to Disk, and do 
not use a Auto RUN line. The utility is exactly 111) bytes in 
length. Keep this off-set figure in mind to extrapolate the 
ACTUAL System VARS when the utility is deleted. These MOVING 
system vars are VARS and E LINE. Note that the only variable 
used in the PEEK VARS utility is "counter n". The use of "n" as 


——a~—counting~-variable —wiii—extend-—the -TOP-of -VARS-and E LINE 


exactly 19 bytes-- "IF n has not been initialized in the main 
program". However, if n IS used in the main program, then the 
PEEK VARS utility will have no affect at all upon the SIZE of 
the vars file. 


Note that the n counter in line 9035 counts from "VARS to E 
LINE minus one", which encompasses the current Vars File in 
memory. If a Counter n has not been used in the main program, 
then EDIT and make the count "TO E LINE+18" in order to account 
for the 19 bytes within the vars file that is costed by 
initializing the n counter. If you CLEAR and RUN the utility, 
then CONT ENTER to print the Vars File, the print out will be in 
error by 19 bytes. This is because Counter n had not been 
initialized when the System Vars was printed, A <GO TO 9000> 
will then print an accurate set of vars. You may add more PEEKS 
before line 9025 to get the status of the various FLAGS. A 
study of the TS-2068 User Manual, Appendix C and D, may help. 


STicK These Two Sw sTehes Meus, He GK: 
Slide $ui7 


Washer *S 


old TS dge Connectoa 
To FT 7 _OhzZeR 

T5- 2008 Edge Cosge TR 
Slot, 1 pitk up ROSCS 
(22624 Ass These ) 


48 


The JULY/APRIL Issue Disk 


Consolodated into ONE 


The July and April Issue Diskettes have been consolodated 
into one giant assemblage of programs and utilities. 
consolodation was necessary because the Budget program, by Bob 


Mitchell, 


was split between the two issues. 


The 


I have not ever 


seen such a combined useful and educational works presented in a 


computer magazine. 


The combined April/July Issue Disk packs in 


a virtual plethora of programs and utilities, almost filling a 


40 track diskette. 


_40 or 80 track. 


The April/July issue disk is available in 
all three DOS formats, Oliger DOS, Larken DOS, and Aerco FD-68 
DOS, and are recorded on 5 1/4 inch Double Side Double Density, 


The sales proceeds of Issue Disks are shared between UPDATE 
and the Authors in a diabolic scheme designed for both to become 
rich quickly at the expense of the Subscribers. 
$8.00 from each disk sale for the tiny amount of work to 


assemble the programs 


disk and mailing. 


sharing 
Slickingheimer, 


ORDERING: 


the remaining $8.00. 


Issue Disk. 


BUDGET, Bl 
Menu.BL 
budget.CJ 
spread. CT 
budget.BJ 
spread. BJ 
BRIEF.B1 
MS-TAS.B1 
PEEK VARS 
budget. CY 
SEARCH 
FILE_DEX 
MARK-MOVE 
VERI_DISK 
Chopin 
Btls 

Mart. 
Spell 


UPDATE takes 


in three disk formats, plus cost of the 


The (already rich) Authors make a killing 
The accounting firm, Sly, 
and Dolittle, assists UPDATE in disbursing the 
huge profits to the authors and helping us to evade taxes. 
requires us to hold quarterly business meetings in Monaco aboard 
the consortium's 300' 


Yacht. 


This 


Send $16.00 (check or M/O) for the April/July 
Please specify for WHICH DOS (Oliger, Larken, or 
Aerco FD-68), and for which type of Disk Drive (40 or 80 track). 
A Catalog of the disk is given below. 


TYPE CYLS SIZE START 


BYTES 
BASIC 
BASIC 
BASIC 
BASIC 
BYTES 
BYTES 
BASIC 
BASIC 
BASIC 
BASIC 
BASIC 
BYTES 
BASIC 
BASIC 
BASIC 
BASIC 
BASIC 
BASIC 
BASIC 
BASIC 


WNWNHE EHH OEE NEUE OAE EEN 


1826 
6007 
87 
986 
702 
25923 
3904 
24554 
2855 
5445 
924 
196 
25923 
4978 
4962 
2092 
4496 
7584 
14780 
7674 
7411 


63417 


Ohm's Law BASIC 


Multiply BASIC 
Type Style BASIC 
Piano BASIC 
budgetD BYTES 
bujE.Cl = BYTES 
bujJb.CI BYTES 
bujJs.CT BYTES 
help.cr BYTES 
bujJ3.CI BYTES 
bujJx.CI BYTES 
OLI-MS-TAS BASIC 
OLI CODE BASIC 
pred BYTES 
Cclear BYTES 
Super MS-T BASIC 
REM BASIC 
file dex BASIC 
ky C ARR 
Ll MCLOAD BASIC 
INIT.BI BASIC 
ms—tas BASIC 


TOTAL FILES: 43 


HEHEHE BREEN BPE EEO PEN BERN 


1257 
6038 
2055 
4747 
652 
17642 
8320 
2048 
3968 
11200 
2944 
1512 
1841 
256 
5367 
3060 
3815 
1118 
3565 
712 
543 
3045 


9980 
8972 


The OCTOBER and JANUARY Issue Disks 
Now available for All Disk Operating Systems 


The OCTOBER 87 and JANUARY 88 Issue disks are now available 
for three Disk Operating Systems; Oliger DOS, Larken DOS, and 
Aerco FD-68 DOS. Both October and January Disks contain a major 
software plus several useful utilities making their value at 
least twice the price. See the diskette Catalogs below. 


ORDERING: Sent $16.00 Check or money order for the disk of 
your choice. Please specify for which DOS, and whether for 40 
or 80 track drive. 


The October Issue Disk The January Issue Disk 


JLO SAFE V2.52 1988, J. Oliger 


JLO SAFE V2.52 1988, J. Oliger 


DISK NAME: OCT UPDATE DISK NAME: U/D JAN 88 
FORMATTED @80 TRACKS, 2 SIDE(S) FORMATTED @40 TRACKS, 2 SIDE(S) 
CAPACITY: 159 CYLS/795K BYTES CAPACITY: 79 CYLS/395K BYTES 
FREE: 132 CYLS/660K BYTES FREE: 70 CYLS/350K BYTES 
FILENAME TYPE CYLS SIZE START FILENAME TYPE CYLS SIZE START 
SDOS MMRG BASIC 3 12180 2061 DISK MGR BASIC 2 5988 2 
Mail Merge BASIC 2 10099 2061 Purity BASIC 1 4512 152 
J-UTIL BASIC 2 9441 9800 LIST LOOK BASIC 1 2259 2 
ALLEGRO BASIC 1 1576 1 DOSDEX BASIC 1 5057 2 
pseudo BASIC 1 1805 5 mterm2. BASIC 1 2756 
pseu VRBLS 1 564 PROG BASIC 1 955 9999 
PRT USING BASIC 1 1373 10 prog BASIC 1 955 
PROMPTS BASIC 1 1066 90 PGM-MOVE BASIC 1 1709 10 
MENAGERIE BASIC 1 4671 2070 
PTR STATUS BASIC 1 684 1 TOTAL FILES: 8 
fm BYTES 2 6912 16384 
mL BYTES 2 6912 16384 
pg BYTES 2 6912 16384 
cpr BYTES 2 6912 16384 
fo BYTES 2 6912 16384 
mg VRBLS 1 612 
LEADER BASIC 1 1766 150 

BASIC 1 4485 152 


TOTAL FILES: 18 
50 


OLIGER 2068 DISK SYSTEM PRICES AND BASIC INFORMATION 


fede tetetetetatete pete tate te te tetete tate te te tate de be tete te te te tote te tata te te tote te 
DISK BOARD "A" 
Bare pc only: $17.95pp 
Kit of board with parts: $55.95pp 
Assembled & tested: $66.95pp 

Two drive data cable for above, 3 foot long total: $16.95pp 

Four drive data cable for above, 4 foot long total: $26.95pp 
WD1770PH-00 disk controller chip: $19.95pp (spare or replacement-limit 1 per order) 
abide te tedote tabs tote tate detatedote tate te tate tate tata tote tote te tote tote tote toto dete 

DISK BOARD "B" W/NMI SAVE 
Bare pc with JLO SAFE Disc Basic eprom: $26.95pp 
Kit of board with parts: $45.95pp 
Assembled & tested: $63.95pp 
nba dete te debate te tate te tite te ti tate tete te te tide tatoo tote toto te tate toto tete tate tote 
PACKAGE OF BOTH DISK BOARDS “AY & "B" W/NMI SAVE 
Bare pcs only with JLO SAFE Disk Basic eprom: $43.95pp 
Kit of both boards with parts: $73, 95pe 
Both boards assembled & tested: $127.95pp 

Both boards, assembled & tested w/2-drive data cable: $139.95pp 
The DiskWorks! Both bds assd w/2-drv data cable & assd 2068 Expansion Bd: $189. 95pp 
wha te tate tote dade te toda te tote te bate te te tate toda te tate tate tote tete te te te tote te te te te 


268 PARALLEL PRINTER PCRT Bare board w/cassette: $16.95 KIt of board w/parts:$24.95 
Assenbied & tested: 530.95 Bare board w/cass (gold):$19.95 Gold board w/parts:$27.95 
Assd & tosted (gold): $33.95 Printer cable fer this port:$14.95 (standard Appie 11 to Epson type,3ft.) 


Port software cassette only: $6.95pp (Uso as alternate Aerco port driver! 

This very small but very capable Centronics type printer port for your 2068 will drive ost any printer that has a 
Centronics type parallel Interface, The port uses the same port and BUSY bit assignment used by the Aerco 268 printer 
1/F, and thus Is compatable with the vast snount of 6B software that aipperts this Interface. This port Is fully 
decoded end contains 8 "PRINTER READY" LED to show your printer's current status. Software on cassette Included with 
thls port allows use of the standard LRINT and LLIST commands aid usa of AT, TAS, and *," the full width your printer 
Is capable of. Also Included aro hi-res screen dumps (vie RAND USR cail) for the Okidata dot addressable graphic 
printers, the Olivett! FR2500 ink Jet printer, the Geminl 10X printer, and the Gorilla Banana printer. An ASCII 
screen dump of ASCII cheracters Is also Included for uso wIth ANY printer. Unlike most other 2068 printer driver 
software, THIS software mainly resides In the 2040 printer buffer, using absolutely none of the ram normally used by 


2068 EXPANS 10N_ BOARD Bare pe toard:$14.95 
Assenbled and tested Oliger 2068 Expansion board $54.95. 
Also aval lable with gold plated rear edge traces. Add $3.C0 por board to above prices for these. This compact (3 3/4" 
* 4 3/8) expansion board Is designed to plug Into tho roar expansion connector of your 2068 computer. Atl of the 2088 
boards from John Oliger Cox, except the 2068 User Cart board are designed to plug into this expansion board, (the 
boards have malo odge traces, ond plug Into this board siniier to te way new boards are plucged Into the Apple 
computer) so this oe is a must If you plan en adding more circuits to your 2068 with John Oliger Co. products. The 
beard Includes one "spare" 20 pin Ic socket for a user circuit, a rear edge connector feedthrough for attaching the 
2040 printer, modem, etc., and the nec. circultry for an ultra stable RGB monitor Interface. (NOTE: The use of the RGB 
clreultry requires opening your 2068, cutting one trace, and Installing one jumper.) The board's purchase Includes 
assembly Instructions and a schematic of the RGB Interface. The parts kit for this one Includes five precut & slotted 
‘edge connectors, 2 le sockets, 1 THCO0 IC, and Ipe 47K Ohm 1/4W resistor. 
ctitrtntetotetatitebetetetetetetotatabobetitetatettetatetibete tetetetetededatetetetedetetetetedetebetebete 
2068 _EPROM_ PROGRAMMER Bare board: $12.95 Board ¥/pts (no eproms):$25.95 
2068 Pomr esmbld & tstd:$33.95 Add $3.00 per board for gold plated edge traces. 

This board adds the capability of programming 2764 & 27128 eprons to your 2068 system. This one Is a must for serious 
use of the 2068 User Cart board. This board comes with complete documentation on {ts assembly, use, theory of 
operation, tips, and detalls on replacing the Hone ron of the 2068 %/a 27128 eprom. This programmer requires the Yop 
Power Supply (below, recommended) or a 4=22VDC regulated adjustable power supply 


2068 USER CARTRIDGE BOARD Bare board:$11.95 (or 3531.95) Board w/parts (ex eprom):$15.95 

pes boerd w/parts:$45-95 Assembled & tested: $20.95e2 or 3 for $59.95 post pd (no eprons) 

Also aval lable w/gold piated edge traces. Add $3.00 per beard to above prices for these gens. 

ATTN: Software Producers & Users Groups: Write for a quote on quantities of wpese or more. 

This board Is designed to plug Into the cartridge port of the 2068 computer. The board can hold 2-2764 or 2-27120 
eprons In any combination. It ailows the 2068 conputer owner, when used with the 2068 or $1000 progranmers, to. store 
his own Basie programs in cartridge form for fast and easy access, Tho board's purchose Includes 
Instructions, schematic, and instructions for Its use with Basic programs. 

Yop POWER SUPPLY Bore board: $4449 Board: w/bé mounting pts:$9.95 
Assenbied ad Tested, less transtormer:$15.95  (TS240 Printer's power pack nay ba used as substitute for transformer 
with sultable connector}. This small single sided boerd provides 4.4, 21, end 25Y0C for use with eny programmer 
offered by The John Ollger Co. This circuit Is designed to put as little stress on the eprom as possible durlag 
programming ad Is reconmended for use with these programmers. The board Is suppiled with schematic, assembly 
instructions, and use Instructions. Perts kit does NOT Include transformer or power cords/alligator clips. 
mtetetetetetetetetebetebetetebetebetetetetetedetebeteteteretetatetntetetetetebetetetebetedadtetatetatetetebetate tate 


THE JOHN OLIGER CO. 
11601 Whidbey Dr. 
Cumberlang, IN 46229, 


Board w/parts: $43.95 


a 


w/voltmetor. 


assembly 


For detailed product list, write- 


RRR KKH RRR ER RR RH HR HR RR KR OF 


* THE 19798 MIDWEST REG TONSwL * 
* TIMEX—-SINCLAIR CONFERENCE * 
* Saturday & Sunday August 27 & 28, 1988 * 


x eR KK 


* hosted 


* co-spo 
Lem 
* Bud 
and 
ee eH 


Cleveland, Ohio 
a a ee ee 


by The Greater Cleveland Sinclair Users Group * 


nsored by: Zebra Systems, Syncware News * 
ke Software, Sharps Inc, Cuyahoga Valley Software 
get Robotics, Indianapolis, CATS, SAF Michigan * 
the SW Fennsylvania Users Groups 

KER KR RRR RR RHR RR KH HH RR RH EH 


Admission: 


tthe eT 


Suggested Ho 
near I-9Q; 


near I-713 


near 1-488; 


Airport; 


Restaurants: 


tee eet 


LOCATION: BECK CENTER FOR THE ARTS — 


(a community theatre/arts complex) 

178@1 Detroit Avenue 

Lakewood, Ohio (ist suburb W. of Cleveland) 

#4,0@ each day, or 

$7.00 for 2 days (includes Sat. night hospitality) 
(exhibit table rentals include 2 admissions 


Pr ee ee ee 


tele: 
Ramada Inn, 20375 Center Ridge Rd (US Rt 22) 
Rocky River, Ohio 8@@-272-6232. Closest Hotel, 


Red Roof Inn, 1-98 & Crocker Road, Westlake Oh. 
802-848-7878 


Days Inn, 4181 W i5@th, Cleveland 216-252-7708 


Scottish Inn, 22115 Brookpark Road, Fairview Fark, 
216-734-4500 


Sheraton Hopkins Airport, 216-267-1580 


There are many fine reasonably priced family 
restaurants in the area. A list will be available. 


Pe a a ee i is 


Travel Routes: 


Lakewood 
Lake Eri 
From I-9 
Road, an 
From I-9 
Road, an 
From 1-7 


Ohio is the first suburb west of Cleveland along 
e. Interstate access is via I-78. 
@ in Lakewood, exit at the McKinley Ave or Warren 

d head north to Detroit Ave, then west. 
@ in Rocky River (next suburb west), exit at Detroit 
d head east. Detroit Road is US Rt 4. 

1, exit at W. 15@th St. and head north. W 150 will 


become Warren Road. Continue north into Lakewood to Detroit 


Ave. and 
These ro 


turn west. 
mites are shown on the AAA Ohio map. 


RRR KERR ERE ERR RE RH RR HR HK HOHE 


Warning! Dont) start this one if you're sleepy. 


Tt requires concentration. ~ed. 


| 
PEEKING AND POKINS ABOUD 
by, Bob Mitchell 
Will ile Ontario 


he of the fun things about using the 182068 is the 
ability to PEEK and PORE about in amongst the machine 
code and particularly when using TIMACHINE. 

This is the first in a series of articles I'11 write 
for TS2068 Up-Date on this subject. Bouquets or 
brick-bats are welcome! 


FUSS ITI IOI IDIOT I III II IOI I III IID 


For starters, let's look at a scenario using the 
compiler Timachine. You have compiled a data file and 
entered about 18000 bytes of data. ‘Then you decide you 
wish you had built in a routine to print the data to 
your big printer. It was only designed to print to the 
2040 printer. 


You have a choice: You can redesign the BASIC and 
recompile in which case you have to re-enter all the 
data (well, not really but I1'11 come back to that); or 
you can PEEK out the data from the compiled code and 
using a simple routine in BASIC send the data to the 


big printer. | 


once again, you will need the REM! LIST info which you 
should have kept when you conpiled your program. Tf 
you didn't do it at the time and you kept a copy of 
your BASIC program then go through the motion of 
Conpiling Lo get the runtime and variable lists and 
addresses. 


Find the start address, of the array or string 
containing the data. Remenber the data really starts 
two bytes further on. For argument's sake let's say 
your array was d$(600,32) and let's say that the start 
address listed was 40000 so that means that the data 
starts at 40002. In your BASIC program assign this to 
variable sl. By the way, don't forget that Timachine 
limits arrays to two dimensions. Tough but that's the 
way it is. 


If all 600 subscripts are not full, then you should 
know how many are used so far and this value should be 
in some variable, say, n. Look for n in your variables 
list and let's hope your made it an integer when you 
compiled. Tf not the value will be in floating point 
notation. All is not lost if it is but it gets more 
difficult and I shall not go into that solution here. 
Assuming the value is indeed in integer notation, then 
n will be located at the address 33335 and the actual 
value of n will be at jaddresses 33335 and 33336. Use 
LET v= PEEK 33335 + 256 * PEEK 33336 in BASIC to get 
this value. 
| 
Now build a FOR-NEXT loop to LPRIND the data to the 
big printer. i 


WANTED! Capture Alive. 
Desparado last seen in Portland, 
OR. Left no forwarding address. 
Name: Syd Wyncoop, a Guru. Need 
to contact to get UDATED. DONT 
SHOOT, but contact UPDATE with 
new location. We will 
apprehend. 


300 FOR k = sl TO sl+(vl * 32) STEP 32 
305 FOR m = 0 TO 31 

310 LPRINT CUR$ PEEK (k + m); 

313 NEXT m 

320 LPRINE 

330 NEXT k 


This will not be as fast as a compiled routine would 
be, but it would be acceptable. 


As I said above, you don't really have to re-enter all 
the data after you have recompiled a program. Here's 
how I did it. 


1. Note the value of n (records entered so far). 


2. SAVE the data in your original compiled program 
by: 
SAVE "prog.Cl"COLE start,len 
where start is the array start address + 2 
and len is the total length of the array 
(600 * 32 = 19200). 


3. Restart the TS2068 and 
LOAD your newly recompiled program and make 
sure it is initialized by cunning it 
from the first entry point. ie, the first 
REM ! OPEN #. 
LOAD "prog. Cl" CODE, newstact. 
where newstart is the new start address + 2 
FOKE the value n into the correct address. 


4. Proceed as you did in your earlier version. 


On a different tack, here is a way to adapt the LPRINI 
routine supplied with the Hacksel printer interface 
hardware to the Spectrum. This works on my emulator 
which is switched on by using OUr 244,3; whether it 
works on a real Spectrum, I know not. This technique 
should be adaptable for other CPI LPRINT routines. 


1. Change two ROM CALLS in the LPRINE code: 
CALL 0745h to CALL OC10 (at 65096 or FE48h) 
CALL 2009h to CALL 1F54 (at 65117 or FESDh) 
(eg, CD4507 becomes CD100C and you PORE the 
decimal equivalents into the right places). 


2. Now SAVE this and then CLEAR 64999 and LOAD 
the revised code into Spectrum. 


3. POKE 23749,0: PORE 23750, 254 
(These are the locations in the Spectrum 
Channel Info area corresponding to 26703 
and 26704 in the TS2068.) 


4. POKE 65535 with 1 or 0 as required to turn 
the Sinclair character set off and the 
ASCIT set on, and vice versa as instructed 
in the instructions for LPRINI. In other 
words, this requirement is the same for the 
Spectrum and TS2068. 


If you dont subscribe then 
may your SCLD Chip get fried, 
your tax return be audited, the 
bank lose your deposit, and 
someone use your credit card. 


Bill Jones 
Edi tor 


IIIT ISIS OITSIIITNII III SIS ITT I STITT TRIO TTT IIIT IST IT SATO III III 


IF YOU OWN A 2068, AND BUY A Z-@8--YOU WILL HAVE ENOUGH COMPUTER: 
POWER TO RUN AZZ THE PROGRAMS NORMALLY USED..£ASILY 
IF YOU NEED TO OWN A PORTABLE COMPUTER THAT HAS THE EASIEST WORD 
PROCESSOR AND SPREADSHEET CAPABLE OF SERIOUS BUSINESS AND 
PERSONAL APPLICATIONS$ THE Z-88 IS THE ONE! 
1. WILL TALK 70 ANY COMPUTER SERIALLY...Italics 
2. WILL PRINT TO ANY PRINTER. 
3. NOISELESS TYPING IF NEEDED. 


4. ADD UP TO 3 MEGABYTE MEMORY. «Underline 
3. CAN REACH PRINTER GRAPHICS Superscript....e=mc™ 
6. MAKE YOUR OWN PROGRAMS Subscript. «Had 


2. DIARY / CLOCK) CALENDAR) ALARM...........Bold-Italicn 
8. DIFFERENT FONTS AVAILABLE + 

9. USER DEFINED CODES ‘ 12 

10. PORTAILE WEARS 4 DOUBLE AA BATTERIES!!! 0.000 eye eee ee CONDENSED 
11.This page typed and printed by Z-88 


IMMEDIATE DELIVERY} PAID FOR BY ME} DELIVERED BY UPS--UPON RECEIPT OF 
*550 MONEY ORDER GR CLEARING OF CHECK MADE OUT TO MIKE FINK 
SUGGESTED EXTRA OPTIONS: A. PARALLEL PRINTER CABLE 65 

B. AC ADAPTER. + ceeccessee 


MIKE FINK 355 W 39 8ST. 
W.LY.CITY 10018-1404 
212 495 6598 


30020 O00 0B OI OTTO ON ORTISIIOII OASIS SINS T OSTA TOOT TOT TA 

Editor's Notes Both Mike Fink and Sharp's Inc. are UPDATE subscribers. 
Mike was so enthused about the new Sinclair 288 that he pulled out all stops to 
become a 288 Dealer. Sharp's Inc. is also a dealer for the 288. This new Lap 
Top computer is on its take off roll and will surely fly to high altitude. 
UPDATE will report its progress. 


Sharp’s, Inc. 


Rt. 10, Box 459 
Mechanicsville, VA 23111 
(804) 746-1664 or 730-9697 


QL Computer 


S 1 2 9.” includes PSION s/w 


We carry ALL hardware and software lines for the Sinclair QL. Compare our 
| prices. VISA and MASTERCARD accepted (3 % surcharge). 
WRITE FOR FREE CATALOG